以下是编译器的输出。奇怪的是第二次运行 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 确实是问题的原因。我将 Windows SDK (C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin) 的路径添加到 PATH 环境变量中,现在我可以运行可执行文件了。
对各种答案的评论;
@谢伊
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
Dependency Walker 在
c:\windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\MSVCR90D.DLL 中找到qtwebkit4.dll 文件使用的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
我正在使用 Qt 框架,它完全使用我现在使用的编译器编译,所以我认为这里没有不匹配。此外,Dependency Walker 显示缺少的 msvcr90d.dll 文件直接链接到可执行文件,因此我认为这不是任何第三方库的错误。