2012-01-19 18 views
2

我有以下代碼:使用GetProc從dll中抓取函數並進入它們?

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

功能GetProc做到這一點:

GetProcAddress(module, proceName) 

當函數「getNumberOfFormats」被稱爲調試器不會踏進去,即使我按「F11 ' 在上面。它也不會告訴我我錯過了一個調用堆棧。

該函數存在於一個單獨的項目中,並鏈接到該項目的copmiled DLL。任何想法,爲什麼我不能進入代碼?

+0

即使你不能進入它,功能調用是否正確? –

+0

函數被調用沒有問題,無論它應該執行什麼都執行。 – tweetypi

回答

2

Visual Studio無法找到您的DLL的調試符號。檢查是否爲您的DLL生成了PDB文件並存在。

+0

其實我只是發現在調試目錄中有一個7z.pdb,它將對應於從那裏鏈接到的7z.dll ... – tweetypi

+0

從不知道最後一條評論,生成了pdb,但它在調試目錄中不同的文件夾到實際加載lib的項目的調試文件夾。將pdb移動到加載7z dll的項目的調試目錄所在的文件夾中。 – tweetypi

1

您可以在從Debug-> Windows-> Modules進行調試時檢查符號載入的信息。如果沒有正確加載,請右鍵單擊所需的DLL並配置正確的符號。

相關問題