J'ai un projet avec un certain JNI à l'intérieur avec un makefile pour compiler un dll
sous Windows 10 64 bits. Pour une contrainte logicielle, ma bibliothèque dll
doit être compilée pour JRE 32 bits.Pourquoi ma méthode lance un UnsatisfiedLinkError?
Mon makefile est la suivante:
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
Bien que les deux LibJNI32.dll
et LibJNI64.dll
sont bien chargés par mon programme java, seul appel à JNI avec les œuvres LibJNI64.dll
. Ceux de LibJNI32.dll
jettent un UnsatifiedLinkError
.
Y a-t-il quelque chose qui manque à mon makefile pour bien compiler en 32 bits?
alors quelle version de Java utilisez-vous? une version 64 bits peut-être? – UKMonkey
J'utilise un jre 32 bits. Mais depuis que j'ai posté ma question, mon problème s'est traduit par "Impossible de trouver les bibliothèques dépendantes". – dooxe
Incase vous êtes toujours coincé - Dépendance walker est votre ami pour cela – UKMonkey