2013-01-22 84 views
0

我正在使用botan Libary在VS 2008上生成Qr代碼我收到錯誤「R6034:嘗試加載C運行時庫不正確」。 其MFC/C++應用和
使用MFC:在共享DLL使用MFC
代碼生成: 「多線程調試DLL(/ MDD)」R6034:嘗試加載C運行時庫不正確

我在fourms通過螺紋了它們都在說需要添加一點我已經有一個清單文件,請幫我解決這個問題

這裏是我的App.exe.manifest.v 「sigcheck.exe - 中號QrCodeTest.exe」

<?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"> </requestedExecutionLevel> 
    </requestedPrivileges> 
</security> 
</trustInfo> 

<dependency> 
<dependentAssembly> 
    <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
</dependency> 

<dependency> 
<dependentAssembly> 
    <assemblyIdentity type="win32" name="Microsoft.VC90.DebugMFC" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
</dependentAssembly> 
</dependency> 

<dependency> 
<dependentAssembly> 
    <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity> 
</dependentAssembly> 
</dependency> 

</assembly> 

OUTPUT:

'QrCodeTest.exe': Loaded 'D:\Project\QrCodeTest\Debug\QrCodeTest.exe', Symbols loaded. 
QrCodeTest.exe': Loaded 'C:\Windows\System32\ntdll.dll' 
QrCodeTest.exe': Loaded 'C:\Windows\System32\kernel32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\KernelBase.dll' 
'QrCodeTest.exe': Loaded 'D:\Project\QrCodeTest\Debug\botan.dll', Binary was not built with debug information. 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\advapi32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\msvcrt.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\sechost.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\rpcrt4.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\user32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\gdi32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\lpk.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\usp10.dll' 
'QrCodeTest.exe': Loaded 'D:\Project\QrCodeTest\Debug\msvcp90.dll' 
'QrCodeTest.exe': Loaded 'D:\Project\QrCodeTest\Debug\msvcr90.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugmfc_1fc8b3b9a1e18e3b_9.0.30729.1_none_bfff6c932d60651e\mfc90ud.dll', Symbols loaded. 
'QrCodeTest.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcr90d.dll', Symbols loaded. 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\shlwapi.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-con trols_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\msimg32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\oleaut32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\ole32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcp90d.dll', Symbols loaded. 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\imm32.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\msctf.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\uxtheme.dll' 
'QrCodeTest.exe': Loaded 'C:\Windows\System32\dwmapi.dll' 
The program '[2708] QrCodeTest.exe: Native' has exited with code -1073741502 (0xc0000142). 

依賴 我跑調試EXE反對依賴,這裏牡丹應該加載 MSVCP90.dll和MSVCR90.DLL代替MSVCP90D.dll和MSVCR90D.dll.Is這原因就是亂七八糟,如果是糾正這個問題。

enter image description here

+0

驗證清單是否會將其應用到您的應用程序資源中。 (在VS或resourcehacker中打開編譯的二進制文件)。在XP外部清單覆蓋內部,但這在Vista和之後是相反的。 – Eugene

+0

@Eugene我使用資源檢查器檢查它顯示exe文件內的清單文件 –

+0

我也檢查過使用sigcheck.exe -m app.exe.It也顯示清單file.which是相同的,我張貼在這裏。 –

回答

2

這必須是由Botan.dll建的方式引起的問題。顯然你已經有了這個DLL的發佈版本,因爲它依賴於CRT的發佈版本。一般來說,與使用CRT的調試版本的調試版本相比,這很不健康,它可能很難診斷運行時錯誤或內存泄漏。

一個DLL應該有一個聲明它自己的依賴項。嵌入爲資源ID爲2的RT_MANIFEST。您可以檢查Botan.dll是否在Visual Studio中有一個。使用文件+打開+文件,選擇Botan.dll,你會看到資源。找到RT_MANIFEST節點並將其打開。驗證資源2是否存在,並且表明它需要「Microsoft.VC90.CRT」

由於您沒有看到它,因此觸發錯誤。使用正確的清單構建它,並且通常試圖獲得此DLL的調試版本對於取得成功非常重要。

+0

我試過了,它強化了「不能枚舉清單」 –

+2

那麼,這是一個非常困難的錯誤消息。顯然你需要更好的構建Botan.dll。聯繫DLL的供應商或所有者以獲得支持。 –

+0

謝謝我想我解決了它..讓我確認它,然後我會發布解決方案。 –

0

我已經下載了牡丹源代碼,這是從
ftp://ftp.qt-project.org/qtcreator/qt-creator-2.1.0-src Qt Creator的源代碼的一部分,Qt Creator中編譯它。 它會給你botand.dll和botand.lib這是botan lib的調試版本。如果你從http://botan.randombit.net/download.html,it下載Windows二進制文件,將不會包含明顯的調試版本二進制文件。它可能運行良好,但也會導致問題其他人。因此,以這種方式生成調試二進制文件。

希望它可以幫助其他人

相關問題