Visual C++ 2005 et fichier redist
Bonjour,
Je n'y comprends plus rien dans le fonctionnement de fichiers manifeste, j'explique mon probl�me.
J'ai une application cr�� sous visual studio 2005 qui link avec 2-3 biblioth�ques dont wxwidgets.
Cette application fonctionne tr�s bien sur la(les) machine(s) de d�veloppement. Normal jusque l�.
Cette application fonctionne bien �galement sur certaines machines non dev sans avoir eu besoin de mettre � jour le syst�me.
Par contre je viens de r�ceptionner un portable vierge (dell avec XP family )sur lequel je dois installer l'application, et l�, j'ai un message d'erreur : l'application n'a pas pu s'initialiser correctement, veuillez r�installer l'application.
Apr�s des recherches, je m'aper�ois qu'il faut installer le visual 2005 redist package. Je l'installe... que dalle, �a ne marche toujours pas.
Je d�cide donc de mettre � jour TOUTE la machine (XP service pack 3, tous les correctifs etc ...) �a ne marche pas plus.
Je t�l�charge donc tous les redists packages possible et imaginable sur le site de microsoft , visual 2005 redist, visual 2005 sp1 redist , visual 2008 redist (par d�sespoir ^^), et tous les .net framework (bien que mon application ne soit pas .net). sans conviction, et bien entendu, �a ne marche pas mieux.
Je me plonge un peu plus dans ce � quoi sert le fichier manifest, et j'ai cru comprendre qu'il permet de sp�cifier une version pr�cise de dll. Je g�n�re donc mon application avec le manifest incorpor� en ressource, et avec le manifest g�n�r� en externe. Cela me permet d'�diter ce fichier manifest et de comprendre comment �a fonctionne.
D�j� d'une, bizarrement, la version de dll dans le manifest ne correspond � rien,cette version n'existe ni sur ma machine dev, ni sur la target.
Pas grave, apparemment, il ne se soucie pas de la version car sur la machine de dev, quand je regarde les dlls charg�es par mon appli, c'est une autre version (visiblement la plus r�cente).
2emement, il va chercher les dlls dans le r�pertoire winsxs du r�pertoire windows. Apparemment, sur ma machine dev, il arrive bien � aller au bon endroit, mais sur ma target, qui a exactement le m�me chemin, il ne les trouve pas. J'ai utilis� dependency walker pour voir s'il trouve les dlls ou non. (dans un cas oui, dans l'autre non).
Si je copie les dlls qu'utilise ma machine dev dans le r�pertoire de l'application sur ma target, �a ne marche pas non plus. Normal car apparemment il cherche ces dlls dans un chemin tr�s pr�cis (inconnu).
J'ai donc tent� de d�sactiver le manifest comme expliqu� sur MSDN en allant dans les propri�t�s de mon projet (dans �dition des liens), alors l�, �a ne marche plus nulle part (ni machine dev, ni target).
Si je lance l'application, il me dit : dll msvcr80.dll manquante ... normal, elle ne se trouve pas dans le PATH standard (windows\system32) mais dans windows\winsxs. Visiblement, sans le manifest, il ne sait pas chercher la dedans. Pas de probl�me, je tente � nouveau de copier les m�mes dlls dans le r�pertoire de l'application, et voici un nouveau plantage :
L'application n'a pas pu s'initialiser correctement (0xC0000142). Cliquer sur OK pour arreter.
Apparemment, c'est un message qui signifie une erreur d'initialisation de dll.
sauf que l�, je ne sais plus quoi faire :(
Quelqu'un a une id�e pour compiler une application en release sous visual 2005, et qui marche partout pour peu qu'on installe les bons redists ?
(en attendant, j essaie d'installer visual sp1 des fois que �a vienne de l�).
Merci de votre aide :)