2017-10-19 110 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外
相关问题