Visual C ++程序问题 - 无法找到Debug CRT

时间:2010-03-02 07:34:50

标签: c++ visual-c++ msvcrt

我有一个朋友正在接管我的Visual C ++项目并且无法运行它。它是一个图形应用程序,它使用Qt GUI库。我提到这个的原因是因为下面的错误。

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

  

激活上下文生成失败   对于   “d:\测试\的Qt \ 4.2.2 \ BIN \ QtGuid4.dll”。   附属大会       Microsoft.VC80.DebugCRT,ProcessorArchitecture用于= “86”,公钥= “1fc8b3b9a1e18e3b”   type =“win32”,version =“8.0.50608.0”   无法找到。请用   sxstrace.exe用于详细诊断。

当我们按照消息要求并运行sxstrace.exe时,这就是我们所看到的:

  

开始激活上下文生成。   输入参数:标志= 0   ProcessorArchitecture = Wow32   CultureFallBacks = en-US; en   ManifestPath =   d:\测试\的Qt \ 4.2.2 \ BIN \ QtGuid4.dll   AssemblyDirectory =   d:\测试\ Qt的\ 4.2.2 \ BIN \

     

--------------- INFO:解析清单文件D:\ Test \ Qt \ 4.2.2 \ bin \ QtGuid4.dll。   信息:清单定义标识是   (空值)。信息:参考:   Microsoft.VC80.DebugCRT,ProcessorArchitecture用于= “86” 类型= “Win32的”,版本= “8.0.50608.0”   信息:解决参考   Microsoft.VC80.DebugCRT,ProcessorArchitecture用于= “86”, “Win32的” 版本= “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 ++再分发包并安装它,那么一切顺利吗?或者这是一个完全不同的问题?

2 个答案:

答案 0 :(得分:7)

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

我建议他尽可能重建受影响的图书馆;我隐约回想起网上有一些关于如何使用Visual Studio重建GPL QT的文章,我认为这些文章并未获得官方支持。

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

答案 1 :(得分:1)

你可以在下面做:LOL

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

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

注意:清单文件应更改为processorArchitecture = X64并输入=“win64”

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

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