2012-03-30 3 views
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 

答えて

2

に見えます。あなたのような何かをする必要があります。エラーを修正して、DLLを生成

 
swig -java example.i 
gcc -c example_wrap.c -I somepath -I someotherpath 
gcc -c example.c -I somepath -I someotherpath 
gcc -shared example_wrap.o example.o -o example.dll 
+0

を、私はスレッド「メイン」ます。java.lang.UnsatisfiedLinkErrorで例外を取得するようDLLが適切な機能を含んでいないように見えます:exampleJNI.gcd(II)私はSWIGのJavaの単純な例を実行しています。すべてLinux上で動作しますので、おそらく追加のコンパイルパラメータやWindwosの問題があります。何か案は? – c12

+0

@ c12 - Windows DLLのビルドに関する問題はありませんが、DLLEXPORTとマークするか、stdcallを明示的に使用する必要があると思います。http://www.mingw.org/wiki/sampleDLL – Flexo

関連する問題