visual 2005 et fichier redist

visual 2005 et fichier redist - API Win32 - Programmation

Marsh Posté le 30-06-2009 à 14:29:51    

Bonjour,
 
Désolé si je ne suis pas dans la bonne section, il n'y a pas vraiment de section pour parler de paramétrage d'IDE. J'ai hésité avec .NET.
 
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 :)
 
(doublon sur developpez.com également)

Reply

Marsh Posté le 30-06-2009 à 14:29:51   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed