Bonjour,
un problème bien complexe m'amène vers vous... je vais essayer d'être clair :
J'ai du code C bien propre et standard qui peut être compilé sous Windows (par Visual Studio 10) et sous Linux (par gcc).
Les fichiers de projets (.sln et .vxproj pour Visual et makefile pour gcc) sont générés avec CMake (il y a un beau CMakeLists.txt qui vient avec).
Par ailleurs, depuis le code C, j'invoque du code java qui s'exécute via la JNI (et la jvm.dll qui va avec)
Jusque là, tout va bien...
Nouvelle donne : on veut maintenant faire fonctionner tout ça en 64 bits.
Sous Windows, grâce à CMake, il est facile de générer un projet "Visual Studio 10 Win64".
Donc aucun problème pour compiler en 64 bits (après quelques ajustements du code).
Mais l'exécution commence directement par l'erreur 0xC000007B (pas très limpide ).
Une petite recherche sur les fora m'apprend que c'est simplement parce qu'il continue à charger la version 32 bits de jvm.dll.
C'est à cause de ma variable path, qui contient un chemin vers elle.
Je la change (ma variable path) et la faisant commencer par le chemin de la version 64 bits (que j'ai installée) et tout fonctionne !
Le problème c'est que je veux pouvoir passer de la version 32 bits à la version 64 bits sans avoir à éditer path à la main.
La solution me semblait être d'ajouter un truc du genre "set path=c:\java64;%path%" dans le menu Propriétés/Evénement de build/Evénement post-build/Ligne de commande de Visual.
Malheureusement, ça ne change que le path d'un process temporaire, et pas celui dans lequel va s'exécuter mon application...
Et c'est là, que vous, les experts, entrez en scène !
Y a-t-il un moyen de faire ce que je veux ?
Attention, je ne parle pas de lancer mon application depuis un shell ou un script. Dans ce cas, je modifie mon path depuis le script avant de lancer l'appli.
Je parle bien de lancer l'appli depuis l'environnement de Visual Studio pour pouvoir exécuter mon code en pas à pas.
Merci de m'avoir lu jusque là et d'avance pour vos réponses...
Partager