Wie behebe ich die CRT Abhängigkeit eines Fileloadexception mit meinem VC2005 Mixed-Mode-DLL auf XP verursacht?

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

Frage

Ich habe einen Mixed-Mode-DLL in Visual Studio gebaut 2005. In Dependency Walker, meine DLL eine Abhängigkeit des folgenden CRT Dlls zeigt. Hinweis: Dies ist auf meinem Windows 7 Entwicklung Maschine.

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

"\ MSVCR80.dll

"\ msvcm80.dll

8.0.50727.4927

Auf meinem Windows 7 dev Maschine gerade fein Visual Studio 2005 diese kompiliert und ausgeführt werden. das Problem ist, es wird nicht mit der neuesten CRT installiert auf meinem Windows XP Testmaschine ausgeführt werden.

Wenn ich die DLL in depenency Gehhilfe auf der XP-Maschine ziehen scheint es für den DLLs in \ System32 zu suchen ... (Ich ging vollständigen Pfad zu zeigen, und es gab keine Wege für sie, nur ein gelbes Ausrufezeichen)

Das Problem ist, dass diese Version (Build 4927) des crt in WinSxS nicht auf der XP-Testmaschine installiert ist. es hat Visual Studio 2005 mit dem neuesten CRT installiert (sp1?).

8.0.50727.4053 ist die neueste Version, die ich auf MSDN finden.

Ich weiß, dies ist nicht die aufregendste Frage auf SO gepostet, aber weiß jemand, was mit dieser 4927-Laufzeit ist oben?

* Bearbeiten *

Das Manifest erzeugt durch 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>

Also, gibt es drei verschiedene Versionen es zielt ...

War es hilfreich?

Lösung

Revision 4927 is a Windows 7 specific version, probably used by Microsoft binaries. Your build should not create a dependency on it, 4053 is the last one for VS2005. Don't troubleshoot this with depends.exe btw, it isn't good at tracking winsxs dependencies.

Start troubleshooting this by double-checking what dependency your build generates. First look in vc\include\crtassem.h, the _CRT_ASSEMBLY_VERSION macro generates the manifest entry. Next is to check the manifest that's embedded in your executable. Your project's Release directory contains the .embed.manifest file that was embedded. And File + Open + File on your executable lets you peek at the actual embedded RT_MANIFEST resource.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top