我嘗試使用this tutorial. 創建JNI helloworld項目我完成了頁面上的每一步。不幸的是後試圖調用PROGRAMM與java -Djava.library.path="C:/Users/Philipp/Desktop/jni" HelloWorld
我得到以下錯誤信息:Java JNI - 無法在AMD 64位平臺上加載IA 32位.dll
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Philipp\Desktop\jni\helloworld.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at HelloWorld.<clinit>(HelloWorld.java:3)
有這種類型的錯誤計算器上幾個問題,遺憾的是沒有任何解決方案都爲我工作。
我想繼續使用JDK 64位,所以我想我必須爲我的64位機器編譯我的C代碼。我嘗試使用-m64
關鍵字:gcc -shared HelloWorld.c -I"C:/Program Files/Java/jdk1.8.0_121/include" -I"C:/Program Files/Java/jdk1.8.0_121/include/win32" -o libhelloworld.dll -m64
這導致了以下錯誤:
HelloWorld.c:1:0: sorry, unimplemented: 64-bit mode not compiled in
#include <jni.h>
^
什麼我必須做的就是它運行?
我到目前爲止只用Java進行編程,所以我對整個C世界都很陌生。我已經下載了cygwin的工具鏈,並且在C:\ cygwin64上有一個文件夾,並且在C:\ cygwin64 \ bin中有很多exe文件。我需要做什麼來使用cygwin64編譯我的.c文件? – Vilib
再次運行cygwin設置。一旦顯示可用軟件包,請選擇x86_64-w64-mingw32工具鏈和軟件包。另一個解決方案是帶有更簡單的東西的msys2和pacman,這是小菜一碟。 NOte cygwin本身不是編譯器!但它帶有'GCC'工具鏈。 C世界真是太棒了,只需要一些時間與東西相處,你就是完美的。 – 2017-04-16 14:23:48