【发布时间】:2017-10-19 13:29:10
【问题描述】:
我有一个包含一些 JNI 的项目,其中包含一个 makefile,用于在 Windows 10 64 位下编译 dll。对于软件约束,我需要为 32 位 JRE 编译我的 dll 库。
我的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 $@ $< -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 $@ $< -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.dll 和LibJNI64.dll 都被我的java 程序很好地加载了,但只能使用LibJNI64.dll 调用jni。那些LibJNI32.dll 抛出一个UnsatifiedLinkError。
我的 makefile 是否缺少某些东西可以很好地编译为 32 位?
【问题讨论】:
-
那么你使用的是什么版本的java?也许是 64 位版本?
-
我使用 32 位 jre。但是自从我发布了我的问题后,我的问题就被翻译成了
Can't find dependent libraries。 -
如果你仍然卡住 - 依赖 walker 是你的朋友
-
谢谢,我试试这个。
标签: java c++ java-native-interface mingw32 mingw-w64