2012-01-19 6 views
2

私は次のコードを持っている:GetProcを使用してdllから関数を取得し、それらにステップインしますか?

GetNumberOfFormatsFunc getNumberOfFormats = (GetNumberOfFormatsFunc)lib.GetProc("GetNumberOfFormats"); 
    if (getNumberOfFormats != NULL) 
    { 
    RINOK(getNumberOfFormats(&numFormats)); 
    } 

機能GetProcはこの行います。関数 'getNumberOfFormatsが' I「はF11を押しても、デバッガはそれにステップはありませんが呼び出されたときに

GetProcAddress(module, proceName) 

を'それに。また、私はコールスタックを逃したとは言いません。

この関数は別のプロジェクトに存在し、そのプロジェクトのcopililed DLLにリンクします。私がコードに入ることができない理由は何ですか?

+0

あなたがそれにステップインできない場合でも、関数は正しく呼び出されますか? –

+0

関数は何も問題なく呼び出され、実行されるはずのものは実行されます。 – tweetypi

答えて

2

Visual Studioでは、DLLのデバッグシンボルが見つかりません。 DLL用にPDBファイルが生成されているかどうかを確認してください。

+0

実際に私はそこに7z.dllに対応する7z.pdbが存在することを発見しました。 – tweetypi

+0

最後のコメントはありません.pdbは生成されましたが、デバッグディレクトリにありました。別のフォルダを実際にlibをロードするプロジェクトのデバッグフォルダにコピーします。 pdbを7z DLLをロードしていたプロジェクトのデバッグディレクトリと同じフォルダに移動すると、それが修正されました。 – tweetypi

1

デバッグ - >ウィンドウ - >モジュールからデバッグ中にシンボルがロードされた情報を確認できます。目的のDLLを右クリックし、正しくロードされていない場合は適切なシンボルを設定します。

関連する問題