3

SWIG を使用して、ソースを管理していないライブラリ用の python インターフェイス モジュールを生成しようとしています。ライブラリには、何らかの理由で次の行があります。

#define VOID void

これは、SWIG であらゆる種類の問題を引き起こしています。VOID は、これらの関数が返す実際のオブジェクトであると考えているようです。

SWIGにそのVOID意味を伝える方法はありますvoidか?

4

2 に答える 2

1

SWIG インターフェイス ファイルを作成したとき、関数プロトタイプを逐語的にコピーしましたVOID。インターフェイス ファイルのすべてのプロトタイプを using から using に変更するVOIDvoid、問題は解決しました。

SWIG はプリプロセッサを尊重しているように見えますが、それ自体のインターフェイス ファイルではなく、理解できるものです。

将来の検索者のためにこれをここに投稿します...

于 2013-02-12T17:22:37.573 に答える
0

ちょっと待ってください... ライブラリのソースがない場合は、#define VOID voidこのライブラリを使用するためにインクルードしているヘッダー (.H) ファイルで発生することを意味していると思います。ライブラリが既にコンパイルされている場合、 はライブラリに#define VOID void影響を与えず、それらのヘッダーにのみ関連します。ディレクティブは#define、コードをコンパイルするプリプロセッサにのみ影響します (ライブラリは既にビルドされています)。したがって、これらのヘッダーのみが VOID を使用している場合は、それらのヘッダー#define VOID voidの上部に があり #undef VOID、下部に があり、VOID マクロを削除するようにしてください。

于 2013-02-12T17:01:00.613 に答える