2010-09-10 5 views
5

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

public final native int createChild(int handle); 

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

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

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 

ответ

6

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

-Wl,--kill-at 

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

2

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