0

私はボタン ライブラリを使用して対 2008 で Qr コードを生成しています。「R6034 : C ランタイム ライブラリを正しくロードしようとしています」というエラーが表示されます。その MFC/C++ アプリケーションとMFC の使用
:共有 DLL
コード生成で MFC を使用する: 「マルチスレッド デバッグ DLL (/MDd)」

私はマニフェストファイルを追加する必要があると彼らが言っている4つのスレッドを通過しました.私はすでに1つ持っています.この問題の解決を手伝ってください.

ここに私の App.exe.manifest.v "sigcheck.exe - m 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>

出力:

'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).

依存関係 依存関係 に対して Debug exe を実行しました。ここで、botan は MSVCP90D.dll と MSVCR90D.dll の代わりに MSVCP90.dll と MSVCR90.dll をロードする必要があります。

ここに画像の説明を入力

4

2 に答える 2

3

これは、Botan.dllが構築された方法によって引き起こされた問題であるに違いありません。このDLLはCRTのリリースバージョンに依存しているため、明らかにこのDLLのリリースビルドがあります。一般に、CRTのデバッグバージョンを使用するデバッグビルドとそれを混合すると、ランタイムエラーやメモリリークの診断が困難になる可能性があります。

DLLには、依存関係を示す独自のマニフェストが必要です。リソースID2のRT_MANIFESTとして埋め込まれます。Botan.dllにVisualStudioにあるかどうかを確認できます。[ファイル]+[開く]+[ファイル]を使用し、Botan.dllを選択すると、リソースが表示されます。RT_MANIFESTノードを見つけて開きます。リソース2が存在し、「Microsoft.VC90.CRT」が必要であると記載されていることを確認します

あなたがそれを見ないことを期待して、エラーを引き起こします。正しいマニフェストを使用してビルドし、一般に、このDLLのデバッグビルドを取得しようとすることは、先に進むために重要です。

于 2013-01-23T14:17:29.957 に答える
0

Qt Creator Sourceの一部であるbotanソースコードを
ftp://ftp.qt-project.org/qtcreator/qt-creator-2.1.0-srcからダウンロード し、QtCreatorでコンパイルしました。それはあなたにbotand.dllとbotanlibのデバッグバージョンであるbotand.libを与えるでしょう.http://botan.randombit.net/download.htmlからWindowsバイナリをダウンロードする場合、それは明らかなデバッグバージョンバイナリを含みません。一部のユーザーには問題なく動作する可能性がありますが、他のユーザーにも問題が発生する可能性があります。したがって、この方法でデバッグバイナリを生成します。

それが他の人を助けることを願っています

于 2013-01-23T15:25:36.870 に答える