2013-05-21 5 views
0

J'utilise JNI pour l'interface avec un pilote CAN que j'ai écrit avec MSVC++ 2012. Tout se compile et fonctionne bien - mais seulement sur mon ordinateur. Chaque fois que j'essaye de courir sur n'importe quel autre ordinateur, j'obtiens le JNI "UnsatisfiedLinkError" - ne peux pas trouver les bibliothèques dépendantes. J'ai déjà implémenté JNI, et généralement ce problème est résolu en installant simplement le package redistribuable Microsoft Visual C++ avant d'exécuter mon programme. Le Redistributable ne résout pas mon problème, cependant, l'installation de l'intégralité de l'IDE MSVC++ Express 2012 sur l'ordinateur en question semble tout faire fonctionner correctement. Ainsi, je suppose que cela signifie qu'il y a des dépendances qui sont installées et ajoutées à PATH quand l'EDI est installé mais pas quand le Redistributable est installé. Juste pour la vérification, j'ai désinstallé l'IDE et mon pilote JNI a échoué à charger une fois de plus. La différence principale entre ceci et mes autres implémentations de JNI est que j'utilise Windows.h car il est requis pour l'API CAN que j'utilise dans mon pilote. Des idées sur toutes les bibliothèques installées avec l'IDE mais pas le Redistributable et dont les prototypes sont inclus avec Windows.h? (Remarque: Je suis conscient que Windows.h inclut un certain nombre d'en-têtes mais j'imagine que les autres critères rendent le problème un peu plus spécifique.)Quelles bibliothèques Windows sont manquantes dans le package redistribuable Visual C++?

Répondre

0

Premier résultat: Vous installez une version de débogage intégrée dans une version finale. Les versions de débogage dépendent des versions de débogage du CRT, qui ne peuvent pas être redistribuées.

Vérifiez que vous utilisez le bon "package redistribuable Microsoft Visual C++". Il y a les mises à jour 2012, 2012 et 2012 ainsi que plusieurs mises à jour pour 2012, 2008, ...).

En supposant que vos dépendances sont des DLL de chargement, vous pouvez utiliser Depends pour savoir ce qui manque. (Remarque: vous verrez généralement certaines DLL de chargement de délai qui sont "manquantes" Ignorer ces questions, voir la FAQ.)

Bien sûr, une fois que vous aurez trouvé le nom et le chemin de la DLL manquante, vous aurez avoir à découvrir quel paquet redist l'installe.

+0

Yup, vous êtes d'abord deviner était en effet correct - merci. – Ben

Questions connexes