我找到了MSVCR90D.dll未在Visual C++ 2008的调试模式中找到问题,但没有一个给出的答案真的能回答这个问题。它们中的大多数指向关闭增量链接,但没有解释错误的真正原因以及如何修复而不关闭增量链接。
我想提一下,我的情况和原来的问题有点不同。我正在使用Visual 2008中的C++编译器,但在Qt中,而不是在Visual中。
有没有人?
发布于 2009-07-19 20:08:37
下面是编译器的输出。奇怪的是,第二次运行build成功了。然而,我怀疑这个问题可能是由于运行mt.exe时出现了这个错误,它负责将信息从清单嵌入到可执行的.
Generating Code...
link /LIBPATH:"c:\Qt\4.5.2-vc\lib" /NOLOGO /DEBUG /MANIFEST /MANIFESTFILE:"debug\formExtractor.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:debug\formExtractor.exe @.\nmD932.tmp
mt.exe -nologo -manifest "debug\formExtractor.intermediate.manifest" -outputresource:debug\formExtractor.exe;1
'mt.exe' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : fatal error U1077: 'mt.exe' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
Exited with code 2.更新
在链接过程中未能运行mt.exe确实是问题的原因。我将path添加到Windows (C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin)到PATH环境变量中,现在我能够运行可执行文件。
对各种答复的评论;
@Shay
从sxstrace输出的txt文件为空。不知道为什么。但是,应用程序日志中有以下信息:
Faulting application formExtractor.exe, version 0.0.0.0, time stamp 0x4a638ee1, faulting module MSVCR90D.dll, version 6.0.6002.18005, time stamp 0x49e03824, exception code 0xc0000135, fault offset 0x0006f04e, process id 0xf68, application start time 0x01ca08ba801ac5cf.版本6.0.6002.18005?
这是什么鬼东西?
@Kirill V. Lyadvinsky
中找到由msvcr90d.dll文件使用的qtwebkit4.dll
c:\windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\MSVCR90D.DLL
但没有找到(另一个版本的?) msvcr90d.dll文件,直接由可执行文件链接。然而,DW似乎并没有在任何地方显示它的版本,是吗?
formExtractor.intermediate.manifest文件竞赛
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC90.DebugCRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>从清单文件中可以看出,可执行文件链接到的msvcr90d.dll版本与qtwebkit4.dll不同。奇怪的是,两个版本的msvcr90d.dll都存在于以下子文件夹中的c:\windows\winsxs文件夹中
x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_96748342450f6aa2和x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb
有什么想法吗?
@knight666 666
我使用的是Qt框架,我使用的正是我现在使用的编译器,所以我认为这里没有不匹配的地方。此外,Dependency显示缺失的msvcr90d.dll文件被直接链接到,到可执行文件,所以我认为它不是任何第三方库的错误。
发布于 2010-08-05 06:53:59
简单地安装VS2008服务包1将修复这个问题,如果这是一个错误,其中的调试CRT是完全缺失的sxs文件夹。
在64位Windows 7上重新安装VS2008和包含VC++项目的解决方案都发生在我身上。当C++程序集在运行时加载时,调试生成会崩溃,并发错误。
在Vista和Win7 (但不是XP)上,SxS错误给出了详细的信息,说明了它尝试了哪些程序集但未能加载--在本例中是VC90.DebugCRT9.0.22.19。我检查了VC程序集的(embedded)清单,确定它包含了对此程序集和版本的引用。
检查sxs目录(%System %\Windows\WinSxS)显示,在并排安装时根本没有安装VC90 DebugCRT!我已经安装了VC++运行时,但这些运行时不包括调试运行时。VS2008的目的是安装调试运行时,但它并不存在。
原来VS2008 不安装的最初发行版是64位VC++ DebugCRT,但安装SP1确实如此。一旦我这样做了,就不会再有运行时异常和并行错误。
发布于 2009-07-19 18:47:08
https://stackoverflow.com/questions/1150464
复制相似问题