5

Qt を呼び出す DLL を作成しようとしています (現在、必要な機能に Jambi を使用できません)。私は単純なJavaメソッドを持っています:

public final native int createChild(int handle);

Visual Studio Express 2010 で C プロジェクトを作成し、DLL をビルドできました。

次に、Qt クリエーターでプロジェクトを作成し、ソースをそこに移動しました。私の知る限りビルドを構成しようとしましたが、得られるのは次のとおりです。

java.lang.UnsatisfiedLinkError: tools.proofofconcept.control.EmbedderComposite.createChild(I)I

私の推測では、シンボルが DLL から適切にエクスポートされていません。-D_JNI_IMPLEMENTATION_ リンカー引数を追加しました:

g++ -D_JNI_IMPLEMENTATION_  -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -shared -mthreads -Wl -Wl,--out-implib,debug\libqt_integration.a -o debug\qt_integration.dll debug/dllmain.o debug/nativecode.o debug/qmfcapp.o debug/qwinwidget.o debug/moc_qwinwidget.o  -L"c:\Qt\2010.05-rc1\qt\lib" -lQtGuid4 -lQtCored4 
4

2 に答える 2

5

次の引数を追加する必要がありました。

-Wl,--kill-at

エクスポートされたシンボル形式が変更されます。

于 2010-09-11T00:12:07.523 に答える
2

Qtを使用している場合は、使用されている構成を確認してください。デフォルトでは「デフォルト」構成が使用され(フォルダー「mkspecs / default」)、win32の場合、これにより「UnsatisfiedLinkError」が発生します。

于 2012-02-17T13:39:57.980 に答える