5

我有一个朋友从我那里接手了一个 Visual C++ 项目,但在运行它时遇到了麻烦。它是一个图形应用程序,它使用 Qt GUI 库。我提到这一点的原因是因为下面的错误。

他可以使用 Visual Studio 2010 构建和链接程序,但是当他运行它时,事件查看器中会出现以下消息:

“D:\Test\Qt\4.2.2\bin\QtGuid4.dll”的激活上下文生成失败。依赖程序集 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b", type="win32", version="8.0.50608.0" 找不到。请使用 sxstrace.exe 进行详细诊断。

当我们按照消息要求执行并运行 sxstrace.exe 时,我们会看到以下内容:

开始激活上下文生成。输入参数:Flags = 0 ProcessorArchitecture = Wow32 CultureFallBacks = en-US;en ManifestPath = D:\Test\Qt\4.2.2\bin\QtGuid4.dll AssemblyDirectory = D:\Test\Qt\4.2.2\bin\

--------------- 信息:解析清单文件 D:\Test\Qt\4.2.2\bin\QtGuid4.dll。信息:清单定义标识为(空)。信息:参考:Microsoft.VC80.DebugCRT,processorArchitecture="x86"type="win32",version="8.0.50608.0" 信息:解析参考 Microsoft.VC80.DebugCRT,processorArchitecture="x86""win32",version=" 8.0.50608.0”。信息:正在解析 ProcessorArchitecture WOW64 的参考。信息:解决文化中性的参考。信息:应用绑定策略。信息:未找到发布者政策。信息:未找到绑定策略重定向。信息:开始装配探测。信息:未在 WinSxS 中找到程序集。信息:尝试在 C:\Windows\assembly\GAC_32\Microsoft.VC80.DebugCRT\8.0.50608.0__1fc8b3b9a1e18e3b\Microsoft 中探测清单。VC80.DebugCRT.DLL。信息:未找到文化中性的清单。信息:末端装配探测。信息:正在解析 ProcessorArchitecture x86 的参考。信息:解决文化中性的参考。信息:应用绑定策略。信息:未找到发布者政策。信息:未找到绑定策略重定向。信息:开始装配探测。信息:未在 WinSxS 中找到程序集。信息:尝试在 C:\Windows\assembly\GAC_32\Microsoft.VC80.DebugCRT\8.0.50608.0__1fc8b3b9a1e18e3b\Microsoft.VC80.DebugCRT.DLL 处探测清单。信息:尝试在 D:\Test\Qt\4.2.2\bin\Microsoft.VC80.DebugCRT.DLL 中探测清单。信息:尝试在 D:\Test\Qt\4.2.2\bin\Microsoft.VC80.DebugCRT.MANIFEST 探测清单。信息:尝试在 D:\Test\Qt\4.2.2\bin\Microsoft.VC80.DebugCRT\Microsoft 处探测清单。VC80.DebugCRT.DLL。信息:尝试在 D:\Test\Qt\4.2.2\bin\Microsoft.VC80.DebugCRT\Microsoft.VC80.DebugCRT.MANIFEST 探测清单。信息:未找到文化中性的清单。信息:末端装配探测。错误:无法解析引用 Microsoft.VC80.DebugCRT、processorArchitecture="x86"、publicKeyToken="1fc8b3b9a1e18e3b"、type="win32"、version="8.0.50608.0"。

很抱歉那条消息的长度,但我认为它可能会唤起一些回忆。这是因为他没有安装 Visual C++ 2005(我相信 VC80 就是从那里来的)C 运行时库吗?如果是这样,他可以下载 VC++ 再分发包并安装它,然后一切都会好起来吗?或者这是一个完全不同的问题?

4

2 回答 2

7

如果您的朋友没有安装 VS2005,他将没有它的调试运行时库。它们不是可再分发运行时和 IIRC 的一部分,Microsoft 禁止您自己分发它们,因此您必须安装 VS2005 才能获得它们。

如果可能的话,我建议他重建受影响的图书馆;我隐约记得,网上有几篇关于如何使用 Visual Studio 重建 GPL QT 的文章,我认为这没有得到官方的支持。

混合 C++ 运行时需要非常小心,如果你没有完全正确,你可能会掉入一个相当讨厌的陷阱。如果无法使用 VS2010 重建所有库,您的朋友将不得不使用 VS2005。如果 MS 仍然提供 VS2005 的 Express Edition 供下载,可能值得检查。

于 2010-03-02T07:40:37.070 回答
1

你不妨在下面做:LOL

如果您在构建于 X64 目标的 Windows 7 X64 模式下运行应用程序,则必须安装以下 X64 SP1 可再发行包

http://www.microsoft.com/download/en/details.aspx?id=2092

注意:清单文件应更改为 processorArchitecture = X64 和 type="win64"

如果您使用在 WOW64 层之上运行的 X86(32 位模式)构建应用程序,则必须安装 X86 SP1 可再发行包

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5582

于 2012-08-10T05:32:41.943 回答