0

VS 2005 ではlibs、IDE でオプションを明示的に設定することで、リンカーが検索しているパスを確認できます。dll対応するものがどこからロードされているかを見つける方法は?

1>Searching libraries
1>    Searching C:\Program Files (x86)\Microsoft Visual Studio 8\VC\lib\msvcrtd.lib:
1>      Found _memcpy
1>        Referenced in deflate.obj
1>        Referenced in gzio.obj
1>        Referenced in infback.obj
1>        Referenced in inflate.obj
1>        Loaded msvcrtd.lib(MSVCR80D.dll)

上記の場合、 isMSVCR80D.dllはどこから来ていますか? VCディレクトリでdllを検索したところ、10 件以上の結果が表示されました。どれが正確にロードされているかを見つける簡単な方法はありますか?

4

1 に答える 1

3

DLL は、リンク時ではなく、実行時に実際にロードされます。実際には、リンクを実行するためにネイティブ DLL がマシンに存在する必要さえありません。

デバッガー (通常は F5) でプログラムを実行し、「デバッグ」サブメニューの IIRC から「モジュール ウィンドウ」を開くと、その情報を確認できます。

また、実行可能ファイルを分析して、ロードされる DLL を推測することもできます。そのための最良のツールは、間違いなくDependency Walkerです。DLL も分析できますが (クール)、マネージ DLL に問題がある可能性があります。

于 2012-08-29T21:38:03.547 に答える