Сборка JNI DLL с использованием MINGW - PullRequest
5 голосов
/ 11 сентября 2010

Я пытаюсь создать DLL, которая будет вызывать Qt (в настоящее время я не могу использовать Jambi для нужной мне функциональности). У меня есть простой метод Java:

public final native int createChild(int handle);

Я создал проект C в Visual Studio Express 2010 и смог собрать DLL.

Затем я создал проект в Qt creator и переместил туда свои источники. Я попытался настроить сборку, насколько мне известно, но все, что я получил, это:

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

Я предполагаю, что символ неправильно экспортируется из DLL. Я добавил -D_JNI_IMPLEMENTATION_ компоновщик 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 

Ответы [ 2 ]

6 голосов
/ 11 сентября 2010

Я должен был добавить следующий аргумент:

-Wl,--kill-at

Будет изменен формат экспортируемых символов.

2 голосов
/ 17 февраля 2012

Если вы используете Qt, убедитесь, какая конфигурация используется.По умолчанию используется конфигурация «по умолчанию» (папка «mkspecs / default»), а для win32 это вызывает «UnsatisfiedLinkError».

...