11
votes

msvcr90d.dll introuvable en mode débogage

J'ai trouvé MSVCR90D.dll introuvable En mode de débogage avec Visual C ++ 2008 question, mais aucune des réponses données ne donne vraiment une réponse à la question. La plupart d'entre eux pointent pour désactiver la liaison incrémentielle mais n'expliquent pas la vraie cause de l'erreur et comment elle peut être corrigée sans éteindre la liaison incrémentielle.

J'aimerais mentionner que ma situation est un peu différente de celle de la question initiale. J'utilise Compiler C ++ de Visual Studio 2008 mais dans le Créateur QT non au sein de Visual Studio.

Quelqu'un?


2 commentaires

J'ai confronté un problème similaire et résolu comme ceci: Stackoverflow.com/a/66439937/4790414


J'ai confronté un problème similaire et résolu comme ceci: Stackoverflow.com/a/66439937/4790414


7 Réponses :


3
votes

Clause de non-responsabilité: Je ne suis pas réel un maître Win32 :)

Je n'ai jamais utilisé Qt Creator, mais crée-t-il un manifeste approprié pour l'EXE?
Peut-être que le manifeste est pour une version différente (SP1 par exemple) et que vous n'avez que la version RTM.
Utilisez-vous Vista? Vous pouvez essayer d'exécuter SxStrace pour diagnostiquer le côté par Problèmes secondaires.


0 commentaires

6
votes
  1. Vous pouvez utiliser walker de dépendance pour savoir quelle version de msvcr90d.dll vous programme tente de trouver. Peut-être une composante ti 3ème partie liée à une version de MSVCR90D.dll que vous n'avez pas.
  2. Vous devriez vérifier le fichier manifeste.xml. Essayez de supprimer toutes les dépendances inutiles.

0 commentaires

1
votes

Est-il possible que vous ayez une version mal correspondante? J'ai eu une chose similaire avec Ogre, je devais recompiler le SDK à l'aide de la dernière version de la bibliothèque tiers pour cela pour compiler.


0 commentaires

4
votes

ci-dessous est sortie du compilateur. Il est étrange que la course à pied la deuxième fois réussit. Cependant, je soupçonne que le problème peut être dû à cette erreur avec exécutant mt.exe qui est responsable de l'intégration des informations de manifeste dans l'exécutable ... xxx

update

omettre de l'exécution de Mt.exe pendant le processus de liaison était en effet la cause du problème. J'ai ajouté un chemin d'accès à Windows sdk ( c: \ filtrages \ microsoft sdks \ windows \ v6.0a \ bin ) à la variable d'environnement chemin et je suis capable d'exécuter exécutable maintenant.

Commentaires à diverses réponses;


@shay

Le fichier TXT de sortie de SxStrace est vide. Ne savent pas pourquoi. Cependant, il y a les informations suivantes dans le journal des applications: xxx

version 6.0.6002.18005?
Ce que diable est-ce?


@kirill v. lyadvinsky

Walker de dépendance trouve msvcr90d.dll utilisé par qtwebkit4.dll < / code> fichier dans
c: \ windows \ winsxs \ x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.bb1f6aa1308c35f6aa1308c35f6aa1308c35f6aa1308c35EB \ msvcr90d.dll

mais ne trouve pas (l'autre version de?) MSVCR90D .dll fichier lié directement par l'exécutable. Cependant, DW ne semble pas montrer sa version nulle part, n'est-ce pas?

Concours de Formextractor.intermediate.Mensiate.Manifest fichier xxx

du fichier manifeste On dirait que l'exécutable est lié à une version différente de msvcr90d.dll que le qtwebkit4.dll . Ce qui est étrange est le fait que les deux versions de msvcr90d.dll sont présentes dans c: \ windows \ winsxs dossier dans les sous-dossiers suivants
x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18E3b_9.0.21022.8_none_96748342450f6AA2 et x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_9.0.bb1f6AA1308C35EB

eces idées?


@ knight666

J'utilise qt Cadre que j'ai compilé en utilisant exactement le compilateur que j'utilise maintenant, donc je pense qu'il n'y a pas d'inadéquation ici. De plus, la dépendance Walker montre le fichier msvcr90d.dll manquant est lié directement à l'exécutable, ce n'est pas une faute d'une bibliothèque tierce que je pense.


2 commentaires

Essayez de supprimer la dépendance microsoft.vc90.debugcrt du manifeste.


Ajout de "C: \ Program Files \ Microsoft SDKS \ Windows \ V6.0A \ bin" au chemin a également travaillé pour moi (Visual Studio 2008 Express, Windows 7 32 bits)



1
votes

J'ai le même problème avec msvcr90d.dll introuvable dans VS2008 C ++ Express Ed. Le manifeste intégré de la sortie .exe ressemble à ceci, lorsque la liaison incrémentielle est activée:



Pas étonnant MSVCR90D.dll n'a pu être trouvé!

J'ai essayé 2 choses:

a. À l'aide d'un éditeur hexagonal, le ci-dessus est écrasé avec le contenu trouvé dans ./debug/xxx.embed.Manifest

b. Utilisez mt.exe -manifest ./debug/xxx.embed.Manifest -OutputResource :./ débogage / xxx.exe

Les deux méthodes semblent fonctionner. J'ai utilisé la 2e méthode en tant que commande d'événement post-construction:

mt.exe -verbose -manifest ./$(ConfigurationName)/$(Targetfilename).Meded.Manifest -OutputResource :./ème (ConfigurationName) / $ (TargetFileName)

Je ne sais pas pourquoi le «mauvais» manifeste est intégré à la 1ère place lorsque la liaison incrémentielle est activée. Si quelqu'un sait pourquoi, veuillez poster.

Merci!

lex


0 commentaires

3
votes

Mise à jour: Dans mon cas, j'ai constaté que VC ++ 2008 Express dispose d'une "utilisation de FAT32" (trouvée dans les propriétés de la configuration "" "outil manifeste"); Cela résout le problème. Les informations d'aide pour cette option explique que les lecteurs / partitions FAT32 ont une latence de 2 secondes dans l'horodatage qui empêche le travail de mt.exe de fonctionner correctement. Cela semble expliquer le comportement quelque peu aléatoire du problème.


0 commentaires

11
votes

Il suffit d'installer VS2008 Service Pack 1 corrigera le problème, s'il s'agit d'une erreur dans laquelle le CRT de débogage est totalement manquant dans le dossier SXS.

J'avais cela arrivé à moi avec une nouvelle installation de VS2008 sur Windows 7 de 64 bits et une solution contenant un projet VC ++. La construction de débogage s'écraserait lorsque l'assemblage C ++ a été chargé au moment de l'exécution, avec une erreur côte à côte.

sur Vista et Win7 (mais pas XP) L'erreur SXS donne des détails sur l'ensemble de l'assemblage qu'il a essayé et n'a pas réussi à charger - dans ce cas, c'était VC90.DEBUGCRT 9.0.22.19. J'ai vérifié le manifeste (intégré) pour l'assemblage VC et assez sûr, il incluait une référence à cet assemblage et de cette version.

Vérification du répertoire SXS (% System Drive% \ Windows \ Winsxs) a montré qu'il n'y avait pas de débogcrt VC90 installé à l'échelle côte à côte! J'avais installé les roulements VC ++, mais ceux-ci n'incluent pas de débogage. VS2008 est destiné à installer un runtime de débogage, mais ce n'était pas là.

éteint la version originale de vs2008 n'installe pas A 64 bits VC ++ DebugCrt, mais l'installation de SP1 fait. Une fois que j'avais fait cela, pas plus d'exceptions d'exécution et d'erreurs côte à côte.


0 commentaires