Bonjour à tous,
Si je poste ici, c'est que je suis totalement désespéré.
C'est vraiment frustrant d'avoir développé un code qui fonctionne parfaitement sur sa machine, destiné à être utilisé par d'autres et qui n'est pas portable.
Je suis totalement désespéré car cela fait 1 semaine que je ne fais que ça matin, midi et soir : essayer de rendre l'exe portable.
J'ai écumé tout votre forum+FAQ, y ai trouvé de nombreux cas quasi-similaires, mais aucune des supers réponses que j'y ai trouvé n'ont marché chez moi...
Donc je vais essayer de bien vous décrire tout en détail, pour vous permettre de répondre aisément.
- J'ai développé une application en Java.
- Cette appli fait appel à une fonction d'une DLL C++ (qui elle même utilise une librairie C, incluse dans la solution).
- La DLL C++ est le résultat de la compilation d'une solution Visual C++ qui était en libre distribution sur le net (des types ont développé une lib qui calcule ce dont j'avais besoin et qui est compliqué à faire, donc je ré-utilise).
J'ai donc installé Visual C++ 2008 (Express, la 9.0) et j'ai compilé la solution (en configuration DEBUG, la configuration RELEASE ne compile pas). J'obtiens ainsi une DLL.- Pour précision, j'ai modifié très légèrement le code C++ pour pouvoir l'appeler depuis mon Java.
- J'ai developpé mon appli sous Eclipse Ganymede. La DLL C++ se trouve dans le projet. Et quand je lance mon appli, cela marche parfaitement.
- Quand je produis un JAR et que je le met sur un autre PC, ça râle à l'exécution au moment de charger la DLL. "LinkError, etc.." Désolé, je n'ai pas le message d'erreur sous la main (je l'aurai ce soir si vous voulez).
- Je précise de suite que le problème ne me semble pas être le fait que la DLL soit dans le JAR. J'ai en effet mis en place plusieurs versions de l'appli. Un première qui extrait la DLL dans le file-système et qui la charge ensuite, une seconde qui n'a pas la DLL dans le JAR mais on livre la DLL avec le JAR.
- IMPORTANT : quand je lance le JAR sur un PC (autre que celui sur lequel j'ai développé) qui a installé Visual C++ 2008 (Express, 9.0)... ça marche !
- J'espère ne pas faire de conclusion hâtive, mais il me semble donc que le souci soit lié à des dépendances de la DLL produite par VC++ 2008 avec des "trucs" qu'installerait VC++ 2008.
- Ayant parcouru les forums, j'ai vu que pour distribuer une appli développée (ici ma DLL) sous VC++ 2008, il fallait déployer sur la machine cible les MFC et CRT et cie... (j'y connais rien) et qu'il y a un package fait pour : le Redistribuable Package x86 machinchose. Je l'ai installé sur les machines cibles, et ça ne marche pas ! :-(
- J'ai vu aussi une solution proposée qui consistait à copier les fichiers de (de tête) Program Files/Visual C++ 2008/VC/redistr/x86/......MFCxx/* et Program Files/Visual C++ 2008/VC/redistr/x86/......CRTxx/* et de les déposer à l'endroit où le JAR est exécuté. Seul bin's, quand je vais sous les répertoires indiqués, je n'ai que les CRT. Pas de MFC. J'ai quand même recopié les CRT à l'endroit où se trouve le JAR sur le PC cible... et ça ne marche pas.
- J'ai même pensé à recompiler la solution VC++ avec un autre compilo qui lui, je l'espère, ne mettra pas en place ces dépendances, ... avant de lire sur le forum que c'était quasi mission impossible (ou suicidaire) de vouloir recompiler avec un autre compilo (notamment Cygwin) une solution VC++.
Arff... On ne pourra pas dire que je n'ai pas fait le tour de la question !
Merci d'avance à vous.
PS : C'est où pour se pendre ?
Partager