2012-06-10 43 views
1

調用由持有該函數的地址生成錯誤 代碼指針的函數:在C硬件交互

p=GetProcAddress(h,"installhook");//p is a pointer that holds the address returned from getprocaddress() function 
(*p)(); //using this pointer making a call to installhook function 

但是代碼是由(*p)();產生錯誤wher我想提出一個調用它說術語不會評估爲功能。 doi如何克服這個問題?有沒有其他方式使用指針調用函數?

+1

你是怎麼聲明'p'的? –

+0

向我們展示p的聲明(以及它的類型,如果它是'typedef') –

回答

2

您需要將GetProcAddress的返回值轉換爲正確的函數類型。例如:

typedef void (*FuncPtr)(); //assuming a function like void f() 
FuncPtr p; 

p = (FuncPtr) GetProcAddress(h, "funcName"); 
if (p) 
    p(); 
else 
    printf("Function not found\n"); 
2

驗證p聲明如下:

void (*p)(void); 

和的GetProcAddress返回值的類型是一樣的。