1
SWIG FAQおよびダイナミックモジュールのドキュメントを読みました.JNI共有ライブラリのビルド方法を決定する際に、 Windows用のdll。 wikiには、非常に古いバージョンのVisual C++を使用したプロセスが記述されています。みんなは何を使っていますか?私は、Windows 7上でのMinGWと、以下のコマンドをインストールし、SWIGの単純なJavaの例で以下のコマンドを実行してきましたSWIGでパッケージ化されたシンプルなJavaサンプル(Windows)の共有ライブラリDLLを作成する際のエラー
、以下を参照:
- C:\ SWIG \ swigwin-2.0.4 \例\ java \ simple> swig -java example.i
- C:¥swigwin-2.0.4¥Examples¥java¥simple> gcc -c example_wrap.c -IC:¥Program F iles \ Java \ jdk1 .clugin \ swigwin-2.0.4 \ Examples \ java \ simple> gcc -shared example_wrap.o -oこのコマンドを実行すると、次のようなメッセージが表示されます。試験ple.dll
最終コマンドエラーアウト:あなたが唯一のexample_wrap.c、コンパイルされていないかはexample.cをリンクされていませんでしたどちらかのように
example_wrap.o:example_wrap.c:(.text+0xa9): undefined reference to `gcd'
example_wrap.o:example_wrap.c:(.text+0xe2): undefined reference to `Foo'
example_wrap.o:example_wrap.c:(.text+0xe8): undefined reference to `Foo'
example_wrap.o:example_wrap.c:(.text+0x107): undefined reference to `Foo'
example_wrap.o:example_wrap.c:(.text+0x10d): undefined reference to `Foo'
collect2: ld returned 1 exit status
を、私はスレッド「メイン」ます。java.lang.UnsatisfiedLinkErrorで例外を取得するようDLLが適切な機能を含んでいないように見えます:exampleJNI.gcd(II)私はSWIGのJavaの単純な例を実行しています。すべてLinux上で動作しますので、おそらく追加のコンパイルパラメータやWindwosの問題があります。何か案は? – c12
@ c12 - Windows DLLのビルドに関する問題はありませんが、DLLEXPORTとマークするか、stdcallを明示的に使用する必要があると思います。http://www.mingw.org/wiki/sampleDLL – Flexo