2012-12-12 4 views
3

Je veux appeler ma DLL C++ avec JNI dans mon projet java. Mais il y a une erreur bizarre: 'UnsatisfiedLinkError: Accès invalide à l'emplacement mémoire'. Et mon environnement est: Windows xp sp3, jdk 1.7.0_01 (et jdk 1.6.23), studio vistual 2010. Mais je le fais en win7 (64bit) (avec le même projet et le même jdk & vs2010) il n'y a pas d'erreur . J'ai utilisé Dependcy Walker pour vérifier la DLL et il n'y a pas d'erreur de dépendance. Donc je suis très perplexe. Que devrais-je faire?JNI appel C++ dll s'est produit 'UnsatisfiedLinkError: Accès non valide à l'emplacement de la mémoire'

+0

Avez-vous essayé de réinstaller le JDK? –

+0

Oui, j'ai rajouté les deux versions de JDK mais elle n'était pas disponible non plus. – bony

+0

Ceci est clairement un problème avec votre Java. Vérifiez si vous avez toutes les exigences nécessaires installées, vous avez tous les correctifs et vous installez la version 32 bits de JDK. Essayez de l'exécuter sur une installation XP SP3 propre. –

Répondre

1

Je suppose que vous essayez d'utiliser la même DLL dans les deux environnements? Si c'est le cas, votre DLL doit être compilée en tant que DLL 32 bits et vous devez utiliser une JVM 32 bits sur Win7-64. Vous pouvez envisager d'expédier à la fois une version 32 et 64 bits de votre application Java et de charger dynamiquement la bibliothèque appropriée. Si vous êtes sûr que vous n'avez pas de conflit 32/64-bit, veuillez fournir plus d'informations sur ce qui échoue.

Questions connexes