1

これはばかげた質問だと思いますが、答えがわかりません。現在、DLL をロードして利用する C++ アプリケーションを持っています (アプリケーションと DLL の両方を VS 2010 でコンパイルしました)。a) DLL の名前を変更すると、見つからない例外が発生し、b) DLL 内からのみ発生する出力が表示される (出力の変更を確認するために変更できる) ため、DLL を使用していると確信しています。 .

私の問題は、デバッグ中に Visual Studio の [モジュール] ウィンドウで、DLL が読み込まれていないように見えることです。このため、明らかにシンボルがなく、ブレークポイントを設定できません...しかし、明らかにDLLを使用しているため、これは意味がありません。

他にも同様の質問をいくつか見てきましたが、答えは一般的に、コードがネイティブ、マネージド、または混合のいずれであるかを調べ、それに応じて「プロセスにアタッチ」フィールドを設定することでした。そこにあるすべてのオプションを試し、デバッガーの種類が「混合」に設定されていることを確認しました (ただし、これらのどれも問題を解決しないことを確認するために、ネイティブとマネージドでも試しました)。

誰か提案はありますか?

前もって感謝します!

4

2 に答える 2

0

私にはいくつかのアイデアがあります:

  1. DLL シンボルが欠落している場合は、出力ウィンドウを確認してください。
  2. DLL の横に dllname.pdb ファイルが存在することを確認します。
  3. Visual Studio ソリューションに 2 つのプロジェクト (EXE、DLL) プロジェクトがあることを確認します。
  4. RELEASE モードではなく DEBUG モードに切り替えます。
  5. プロセス エクスプローラーを実行し (MS からダウンロード)、実行時に EXE に結合されている DLL のパスを確認します。

最後に究極の解決策:

  1. Process Explorer を開き、DLL 名を検索します。
  2. それを使用しているEXEを見つけます。
  3. VS に移動し、デバッガーをその EXE にアタッチします。

それらのいずれかがあなたの問題を解決することを願っています

于 2013-09-13T02:01:19.610 に答える