19

vld.h、vld.lib、vld_x86.dll を Visual Studio 2010 の Win32 プロジェクトに含めました。正しくビルドされますが、実行すると次のメッセージが表示されてクラッシュします。

"The application was unable  to start correctly (0xc0150002). Click OK to close the application."

Dependency Walker で実行しましたが、次のようにサイド バイ サイド エラーが表示されます。

Error: The Side-by-Side configuration information for "D:\project\..\debug\VLD_X86.DLL" contains errors. The application has failed to start because its side-by-side configuration is incorrect.)

ここで提案されているように、マニフェストをいじるなど、さまざまな方法を試しました。

https://vld.codeplex.com/discussions/360243

vld.h の次の行にコメントを付けた場合にのみ、適切に実行されます

// Force a symbolic reference to the global VisualLeakDetector class object from
// the DLL. This ensures that the DLL is loaded and linked with the program,
// even if no code otherwise imports any of the DLL's exports.
//#pragma comment(linker, "/include:__imp_?g_vld@@3VVisualLeakDetector@@A")

ただし、その行をコメントアウトすると、vld は何も出力しません (vld 統合がない場合と同様)。

以前にこの問題を抱えている人はいますか?事前に感謝します。

4

5 に答える 5

25

私もこの問題を抱えていました。これらすべてのファイルをvld_x86.dll/vl_x64.dllと同じディレクトリに追加する必要があります。

Microsoft.DTfW.DHL.manifest

dbghelp.dll

これは、Visual Leak Detector の Win32/Win64 bin フォルダーからのものです。これを見つけた: https://vld.codeplex.com/wikipage?title=Building%20Visual%20Leak%20Detector%20from%20Source

于 2013-11-19T06:43:56.933 に答える
2

私もこの問題(このエラーメッセージ)を抱えていました。私の場合、vld_x86.dll は、予想されるバージョンとは別のバージョンである可能性が高く、他のソフトウェアによってプリインストールおよび登録されていました。(誰もが VLD を好むようです) したがって、VLD がビルドされたパスの vld_x86.dll の代わりにロードされました。外部 DLL の登録を解除すると、問題が解決しました。

したがって、エキゾチック パスからの DLL のロードの出力を確認することをお勧めします。

于 2014-07-14T06:10:59.787 に答える