2017-10-19 109 views
0

我有一個項目與一些JNI裏面有一個生成文件來編譯在Windows 10 64位下的dll。對於軟件約束,我需要爲32位JRE編譯我的dll庫。爲什麼我的方法拋出`UnsatisfiedLinkError`?

我的makefile文件如下:

CC32=C:\i686-w64-mingw32-gcc\bin\i686-w64-mingw32-g++.exe 
CC64=C:\Program\ Files\mingw-w64\x86_64-6.2.0-win32-seh-rt_v5-rev1\mingw64\bin\g++.exe 

all: LibJNI32.dll LibJNI64.dll 

LibJNI32.dll: LibJNI.cpp LibJNI.h 
    ${CC32} -shared -o [email protected] $< -mtune=generic -m32 -std=gnu++11 -O2 \ 
    -I. -IC:\Program\ Files\ (x86)\Java\jdk1.8.0_151\include -IC:\Program\ Files\ (x86)\Java\jdk1.8.0_151\include\win32 

LibJNI64.dll: LibJNI.cpp LibJNI.h 
    ${CC64} -shared -o [email protected] $< -mtune=generic -fPIC -m64 -std=gnu++11 -O2 \ 
    -I. -IC:\Program\ Files\Java\jdk1.8.0_121\include -IC:\Program\ Files\Java\jdk1.8.0_121\include\win32 

LibJNI.h: LibJNI.java 
    javah -o LibJNI.h -cp ../java my.package.LibJNI 

雖然兩者LibJNI32.dllLibJNI64.dll通過我的java程序也被加載,只能調用與LibJNI64.dll作品JNI。 LibJNI32.dll投擲UnsatifiedLinkError

有沒有什麼我的生成文件丟失,編譯好32位?

+0

那麼你在使用什麼版本的java?一個64位版本可能? – UKMonkey

+0

我使用32位jre。但是,因爲我發佈了我的問題,我的問題轉化爲'無法找到依賴庫'。 – dooxe

+0

incase你仍然卡住 - 依賴沃克是你的朋友這 – UKMonkey

回答

0

如果你有32/64位庫玩的時候,你有着共同的系統庫這可能是一個鬥爭:

  • 確保把32個庫的路徑(即那些您的DLL取決於)
  • 做一個簡單的包裝代碼,並仔細檢查你的DLL工程JVM外
相關問題