我怎么修复CRT依赖性造成一FileLoadException我vc2005混合模式的错误XP?
-
11-10-2019 - |
题
我有一个混合模式DLL在visual studio2005年。在依赖性,沃克,我DLL是表示一个依赖下列CRT Dll。注意,这是在我的窗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
在我的窗7开发计算机使用Visual Studio2005年这个编译和运行得很好。问题是它不会跑在我的Windows XP试验机的最新CRT安装。
当我拖DLL入depenency沃克XP机似乎是在寻找Dll\System32...(我去表演完整的路径,也没有途径,只有一个黄色的惊叹号)
问题是,这个版本(建立4927)crt在;没有安装在XP试验机。它有Visual Studio2005年的最新CRT安装(sp1?).
8.0.50727.4053 是的最新版本我可以找到MSDN。
我知道这不是最令人兴奋的问题上张贴,但任何人都不会知道什么是这4927运行时?
* 编辑 *
清单所产生的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>
因此,有3个不同的版本,它的目标是...
解决方案
修订4927是Windows7个具体版本,可能使用微软的二进制文件。你的建立不应该造成一种依赖于它,4053是最后一个为VS2005.不解决这与depends.exe 顺便说一句,这是不擅长跟踪;无法依赖关系。
开始排除这双-检查什么的依赖你的建造产生。第一次看在vc\包括\crtassem.h,_CRT_ASSEMBLY_VERSION宏产生的清单的条目。下一步是检查清单,这是嵌入可执行的。项目的释放目录中包含的.嵌入。清单文件,该文件被嵌入。和文件+开+文件在您的可执行可以让你看看实际的嵌入式RT_MANIFEST资源。