0

我有一个用 Visual Studio 2005 构建的第三方 DLL,我在一个用 Visual Studio 2008 构建的项目中使用它。这个 DLL 依赖于 VS2005 CRT,版本 8.0.50727.4053。

在 Windows 7 上它可以工作,但在 Vista 和 XP 上 LoadLibrary 失败并出现并排错误。来自事件查看器:

“C:\MyLibrary.dll”的激活上下文生成失败。相关程序集 Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053" 找不到。请使用 sxstrace.exe 进行详细诊断。

我尝试将msvcm80.dll, msvcp80.dll,msvcr80.dllx86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_d08d7da0442a985d我的计算机上复制到与 DLL 相同的目录,但 LoadLibrary 仍然失败,并且事件查看器中出现相同的错误。

这是 sxstrace.exe 的输出:

=================
Begin Activation Context Generation.
Input Parameter:
    Flags = 0
    ProcessorArchitecture = x86
    CultureFallBacks = en-US;en
    ManifestPath = C:\MyDir\MyLibrary.dll
    AssemblyDirectory = C:\MyDir\
    Application Config File = 
-----------------
INFO: Parsing Manifest File C:\MyDir\MyLibrary.dll.
    INFO: Manifest Definition Identity is (null).
    INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053".
    INFO: Resolving reference for ProcessorArchitecture x86.
        INFO: Resolving reference for culture Neutral.
            INFO: Applying Binding Policy.
                INFO: Find publisher policy at C:\Windows\WinSxS\manifests\x86_policy.8.0.microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4016_none_5169e8e10f4ca52d.manifest
                INFO: No binding policy redirect found.
            INFO: Begin assembly probing.
                INFO: Did not find the assembly in WinSxS.
                INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.CRT\8.0.50727.4053__1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.DLL.
                INFO: Attempt to probe manifest at C:\MyDir\Microsoft.VC80.CRT.DLL.
                INFO: Attempt to probe manifest at C:\MyDir\Microsoft.VC80.CRT.MANIFEST.
                INFO: Attempt to probe manifest at C:\MyDir\Microsoft.VC80.CRT\Microsoft.VC80.CRT.DLL.
                INFO: Attempt to probe manifest at C:\MyDir\Microsoft.VC80.CRT\Microsoft.VC80.CRT.MANIFEST.
                INFO: Did not find manifest for culture Neutral.
            INFO: End assembly probing.
    ERROR: Cannot resolve reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053".
ERROR: Activation Context generation failed.
End Activation Context Generation.
4

2 回答 2

1

您需要安装Microsoft Visual C++ 2005 redistributable .

于 2012-09-20T15:27:28.753 回答
1

你需要为 VS2005 安装一个可再发行包。不幸的是,其中有几个用于不同的服务包级别、安全修复等。

一般来说,要找到你想要的那个,谷歌没有加载的 DLL 的版本号(在这种情况下是8.0.50727.4053)。

您可能会找到指向正确包的链接

于 2012-09-21T09:05:53.007 回答