在调试模式下找不到msvcr90d.dll [英] msvcr90d.dll not found in debug mode

查看:217
本文介绍了在调试模式下找不到msvcr90d.dll的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找到找不到MSVCR90D.dll在调试模式与Visual C ++ 2008问题,但没有一个给定的答案真的给出了答案的问题。其中大多数指向关闭增量链接,但不解释错误的真正原因,以及如何修复而不关闭增量链接。



我想提一提我的情况与原来的问题有所不同。



任何人都可以使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆