Comment puis-je résoudre la dépendance CRT provoquant une FileLoadException avec mon VC2005 DLL mode mixte sur XP?

StackOverflow https://stackoverflow.com/questions/4196030

Question

J'ai une DLL en mode mixte construit en studio visuel 2005. Dans walker dépendance, ma DLL montre une dépendance des DLLs CRT suivants. Notez que c'est sur ma machine Developement Windows 7.

c: \ windows \ winsxs \ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5 \ msvcp80.dll

"\ Msvcr80.dll

"\ msvcm80.dll

8.0.50727.4927

Sur ma machine dev Windows 7 en utilisant Visual Studio 2005 cette compile, et fonctionne très bien. le problème est il l'habitude de courir sur ma machine de test Windows XP avec le dernier CRT installé.

Quand je fais glisser la DLL dans marcheur depenency sur la machine XP, il semble rechercher les DLL dans \ System32 ... (je suis allé montrer le chemin complet et il n'y avait pas de chemin pour eux, juste un point d'exclamation jaune)

Le problème est que cette version (build 4927) du crt dans WinSxS est pas installé sur la machine de test XP. il a Visual Studio 2005 avec le dernier tube cathodique installé (sp1?).

8.0.50727.4053 est la dernière version que je pouvais trouver sur MSDN.

Je sais que ce n'est pas la question la plus excitante affichée sur SO, mais ne sait quiconque ce qui est avec ce temps d'exécution 4927?

* EDIT *

Le manifeste généré par Mt.exe:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

Alors, il y a 3 versions différentes, il vise ...

Était-ce utile?

La solution

Révision 4927 est une version spécifique de Windows 7, probablement utilisé par les fichiers binaires Microsoft. Votre construction ne devrait pas créer une dépendance à son égard, 4053 est la dernière pour VS2005. Ne pas résoudre ce avec depends.exe BTW, ce n'est pas à faire le suivi des dépendances de WinSxS.

Démarrer le dépannage en double-vérifier ce que la dépendance de votre build génère. Regardez d'abord dans vc \ include \ crtassem.h, la macro _CRT_ASSEMBLY_VERSION génère l'entrée manifeste. Suivant est de vérifier le manifeste qui est intégré dans votre exécutable. Le répertoire version de votre projet contient le fichier .embed.manifest qui a été intégré. Et Fichier + Ouvrir + fichier sur votre exécutable vous permet de jeter un regard à l'embarqué RT_MANIFEST réelle des ressources.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top