以下はコンパイラからの出力です。2 回目のビルドの実行が成功するのは奇妙です。ただし、問題は、マニフェストから実行可能ファイルに情報を埋め込む責任がある 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 SDKC:\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 は、次のファイルで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
何か案は?
@騎士666
現在使用しているコンパイラとまったく同じものを使用してコンパイルした Qt フレームワークを使用しているので、ここに不一致はないと思います。さらに、依存関係ウォーカーは、不足しているファイルが実行可能ファイルに直接msvcr90d.dll
リンクされていることを示しているため、サードパーティのライブラリのせいではないと思います。