В настоящее время я пытаюсь скомпилировать Dll для использования JNI, используя Eclipse CDT и MinGW.
Следуя инструкции, я создал класс Java, который объявляет нативные методы, а затем использовал javah для получения соответствующего заголовочного файлаи я реализовал его в классе C ++.
Код C ++ очень прост и компиляция работает, но когда я загружаю библиотеку в класс Java, я получаю эту ошибку:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Main.integerMethod(I)I
at Main.integerMethod(Native Method)
at Main.main(Main.java:12)
Я «исследовал» dll и обнаружил, что все методы, которые должны быть вызваны, имеют суффикс типа «@ 14».Проблема в том, что я уже использую опцию -Wl, - kill-at compiler, которая должна удалить эти очень смущающие теги ... Так почему он не работает?
Журнал компиляции выглядит следующим образом:
**** Rebuild of configuration DLL for project JniCTest ****
**** Internal Builder is used for build ****
g++ -IC:\Program Files\Java\jdk1.6.0_13\include -IC:\Program Files\Java\jdk1.6.0_13\include\win32 -O3 -Wall -c -fmessage-length=0 -mno-cygwin -D__int64=long long -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -oMain.o ..\Main.cpp
g++ -o libJniCTest.dll -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -shared -olibJniCTest.dll Main.o
Build complete for project JniCTest
Time consumed: 375 ms.
Что-то не так с опциями компилятора?Спасибо за любую помощь.