在调试模式下找不到msvcr90d.dll [英] msvcr90d.dll not found in debug mode
问题描述
我想提一提我的情况与原来的问题有所不同。
任何人都可以使用C ++编译器。
下面是编译器的输出。奇怪的是,第二次运行构建成功。但是我怀疑这个问题可能是由于运行mt.exe的错误,它负责将信息从清单嵌入到可执行文件中...
生成代码...
link /LIBPATH:\"c:\Qt\4.5.2-vc\lib/ NOLOGO / DEBUG / MANIFEST /MANIFESTFILE:\"debug\formExtractor.intermediate。清单/ SUBSYSTEM:WINDOWS/ MANIFESTDEPENDENCY:type ='win32'name ='Microsoft.Windows.Common-Controls'version ='6.0.0.0'publicKeyToken ='6595b64144ccf1df'language ='*'processorArchitecture ='*' OUT:debug\formExtractor.exe @ .\\\
mD932.tmp
mt.exe -nologo -manifestdebug\formExtractor.intermediate.manifest-outputresource:debug\formExtractor.exe; 1
'mt.exe'不被识别为内部或外部命令,
可操作的程序或批处理文件。
NMAKE:致命错误U1077:'mt.exe':返回代码'0x1'
停止。
NMAKE:致命错误U1077:'C:\Program文件(x86)\Microsoft Visual Studio 9.0 \VC\BIN\\\
make.exe':返回代码'0x2'
停止。
退出代码2.
UPDATE
无法在连接过程中运行mt.exe确实是问题的原因。我将路径添加到Windows SDK( C:\Program Files \Microsoft SDKs \Windows \v6.0A\bin
)到PATH环境变量,
对各种答案的评论;
@Shay
从sxstrace输出的txt文件为空。不知道为什么。但在应用程序日志中有以下信息:
错误应用程序formExtractor.exe,版本0.0.0.0,时间戳0x4a638ee1,faulting模块MSVCR90D.dll,版本6.0.6002.18005,时间戳0x49e03824,异常代码0xc0000135,故障偏移0x0006f04e,进程id 0xf68,应用程序启动时间0x01ca08ba801ac5cf。
版本6.0.6002.18005?
这是什么?
@Kirill V. Lyadvinsky
Dependency Walker发现 msvcr90d.dll
由中使用的qtwebkit4.dll
文件
c:\windows \winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\MSVCR90D.DLL
但找不到(其他版本of?) 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
我使用的Qt框架,我编译使用的是我现在使用的编译器,所以我认为没有不匹配这里。此外,Dependency Walker显示缺少的 msvcr90d.dll
文件被直接链接到 可执行文件,所以这不是任何第三方库的错误。 / p>
I found MSVCR90D.dll not found in debug mode with Visual C++ 2008 question but none of given answers really gives answer to the question. Most of them point to turning off incremental linking but don't explain the true cause of the error and how it can be fixed without turning off incremental linking.
I'd like to mention that my situation is a little different than the one in the original question. I am using C++ compiler from Visual Studio 2008 but within Qt Creator not within Visual Studio.
Anyone?
Below is output from compiler. It's strange that running build the second time succeeds. However I suspect the problem might be due to this error with running mt.exe which is responsible for embedding information from manifest into executable...
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.
UPDATE
Failing to run mt.exe during the linking process was indeed the cause of the problem. I added path to Windows SDK (C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
) to the PATH environment variable and I'm able to run executable now.
Comments to various answers;
@Shay
Output txt file from sxstrace is empty. Have no idea why. However there's the following information in the application log:
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.
Version 6.0.6002.18005?
What the heck is this?
@Kirill V. Lyadvinsky
Dependency Walker finds msvcr90d.dll
used by qtwebkit4.dll
file in
c:\windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\MSVCR90D.DLL
but doesn't find (the other version of?) msvcr90d.dll
file linked directly by the executable. However DW doesn't seem to show it's version anywhere, does it?
Contest of formExtractor.intermediate.manifest file
<?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>
From the manifest file it looks like the executable is being linked to a different version of msvcr90d.dll
than the qtwebkit4.dll
. What's strange is the fact that both versions of msvcr90d.dll
are present in c:\windows\winsxs
folder in the following sub folders
x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_96748342450f6aa2
and
x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb
Any ideas?
@knight666
I'm using Qt framework which I compiled using exactly the compiler I'm using now so I think there's no mismatch here. Additionally Dependency Walker shows the missing msvcr90d.dll
file is linked directly to the executable so it's not a fault of any 3rd party library I think.
这篇关于在调试模式下找不到msvcr90d.dll的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!