2010-09-10 24 views
5

Próbuję utworzyć bibliotekę DLL, która wywoła Qt (obecnie nie mogę używać Jambi dla potrzebnej mi funkcji). Mam prostą metodę Java:Zbuduj bibliotekę DLL JNI przy użyciu MINGW

public final native int createChild(int handle); 

Utworzony projekt C w Visual Studio Express 2010 i był w stanie zbudować DLL.

Potem stworzyłem projekt w kreatorze Qt i przeniosłem tam moje źródła. Próbowałem skonfigurować build Do mojej najlepszej wiedzy ale pojawia się:

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

Domyślam się, że symbol nie jest prawidłowo wywiezione z DLL. Dodałem -D_JNI_IMPLEMENTATION_ łącznikową Arg

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 

Odpowiedz

6

powinny Dodałem następujący argument:

-Wl,--kill-at 

Spowoduje to zmianę formatu eksportowanego symboli.

2

Jeśli używasz Qt, upewnij się, która konfiguracja jest używana. Domyślnie używana jest konfiguracja "domyślna" (folder "mkspecs/default"), a dla win32 powoduje to "UnsatisfiedLinkError".

Powiązane problemy