2012-01-07 11 views
1

私はhereにあるSWIG Javaの例に従おうとしています。この例では、コンパイルにcygwinを使用しています。私はCソースファイルの代わりにalredyでコンパイルされたdll test.dllをコンパイラに渡したいと思います。 SWIG.orgの例では、Cソースを使用しています。私はtest.dll(コンパイルされたCソース)とexample.dllを3番目のコマンドに渡そうとしましたが、 "test.dll:そのようなファイルやディレクトリはありません"というエラーが出ます。 SWIG.orgの3番目のコマンドは、example.cに基づいてexample.dllを作成します。 example.dllの代わりにtest.dllを使用するようにexample.dllを作成する方法はありますか?SWIG CYGWIN DLLのリンク

この例では、これを達成する方法はありますか?

Cソースなしで私の試み、単にDLL:

$がぶ飲み-java example.i

$ gccのexample_wrap.c -I/C/jdk1.6.0_30/-Iが含まれます/c/jdk1.6.0_30/include/win32

$のgcc -shared example_wrap.o -mno-cygwinの-Wl、 - アドオンでstdcall-エイリアス-o TEST.DLL EXAMPLE.DLL

SWIG.orgコード例:

$ swig -java example.i 
$ gcc **-c example.c** example_wrap.c -I/c/jdk1.3.1/include -I/c/jdk1.3.1/include/win32 
$ gcc -shared example.o example_wrap.o -mno-cygwin -Wl,--add-stdcall-alias -o example.dll 
+1

ほぼ12歳のJava 1.3.1を使用してもよろしいですか? –

+0

私は1.6を使用しています。これは例のものです...タイプミスを修正しました。 – c12

答えて

1

あなたではなく、単にexample_wrap.cソースファイルをコンパイル秒、より、あなたのプログラムをリンクする最後のコマンドにtest.dllを渡す必要があります。 (-cオプションはgccにコンパイルのみを指示します)

リンク行のオブジェクトとDLLの順序は重要です。 DLLはそれらを使用するものの後に来なければなりません。

+1

私は$ gcc -shared example_wrap.o -mno-cygwin -Wlを試しました。-add-stdcall-alias -o test.dll example.dllここで、test.dllは、私のCライブラリのanlready準拠のDLLであり、example.dllはそれと通信する新しいDLLです。私はgccを持っています:test.dll:いいえそのようなファイルやディレクトリ。それは入力として、任意のアイデアをしたくないtest.dllを作成する必要がありますか? – c12

関連する問題