Ошибка при выполнении с JNI - PullRequest
2 голосов
/ 23 апреля 2011

Я следовал этому руководству http://www.ibm.com/developerworks/java/tutorials/j-jni/section2.html (реализация C) для реализации простого примера взаимодействия JNI, но я получаю эту ошибку при запуске файла Java:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\JNI_examples\example2\Sample1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1028)
        at Sample1.main(Sample1.java:10)

Я не знаюпочему он думает, что это 64-битная AMD ...

Я также попытался запустить путь к библиотеке: java -Djava.library.path =.Sample1

Но это, похоже, не помогло ...

Я запускаю cl немного по-разному из-за разных путей, вот что я запускаю:

cl -I"C:\Program Files (x86)\Java\jdk1.6.0_24\include" -I"C:\Program Files (x86)\Java\jdk1.6.0_24\include\win32" -LD Sample1.c -FeSample1.dll

Любая подсказка о том, что происходит?

Спасибо!

1 Ответ

2 голосов
/ 23 апреля 2011

Ваша JVM, вероятно, 32-битная, когда вы скомпилировали DLL для 64-битной.JVM нужны библиотеки, скомпилированные с той же архитектурой, что и JVM, без исключений.Измените параметры компиляции, чтобы скомпилировать 32-битную DLL, и она должна работать.

IA-32 означает 32-битную архитектуру Intel, то есть x86, а AMD 64 - x86-64.Intel закончила лицензирование AMD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...