2012-02-10 51 views
0

我想用一個DLL在我的程序,它有一個功能的typedef現有的DLL函數返回功能錯誤

void Set_Callback(Function Pointer) 

示例代碼插入一個typedef,它obiously不與我的VS C++ 2010

工作
typedef void (SET_CALLBACK)(void far pascal (*lpfnPtr)(int)); 

對於這一行,我得到一個語法錯誤'*'和'函數返回函數'錯誤。

感謝您的幫助提前

回答

1

它更容易理解,如果你打破它分爲兩個類型定義閱讀:

typedef void (__stdcall * Function)(int); 
typedef void (* SETCALLBACK)(Function pf); 
在到達第一個typedef

pascal變得__stdcall(如pascal是較早的16位系統),以及far可以被丟棄,因爲它是在64分之32位架構

多餘
+0

不應該SETCALLBACK是__stdcall? – 2012-02-10 10:36:59

+0

@KitFisto:不,它使用默認約定,因此'typedef'也應該 – Necrolis 2012-02-10 10:41:40

+0

我沒有任何生成錯誤了,但現在我的應用程序崩潰了。這可能是因爲舊的DLL和我的代碼不再使用遠帕斯卡? – cevou 2012-02-10 16:14:55

0

它應該是

typedef void far pascal (*CallbackType)(Function*);