2016-10-04 73 views
1

我正在將C++庫包裝到CLI中,以便它可以在c#上運行。在C++/CLI中傳遞函數作爲參數

這是我在C++庫函數:

void setCallback(void (*pFunc)(void * pParam), void * pParam); 

這裏是例子:

void callbackHandler(int iNum) 
    { 
     cout<<"Callback : "<< iNum <<endl; 
    } 

    myObj.setCallback(callbackHandler,3); 

如何轉換到CLI功能? 如何將c#函數傳遞給setCallback(C++)函數?

+0

你需要做一個'代表'類型,以及包含'gcroot '的非託管結構。 – Medinoc

+0

https://msdn.microsoft.com/en-us/library/at4fb09f(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1 –

回答

0

question "Passing C++/CLI Class Method as C function pointer"也應該爲您的問題提供解決方案。

(在那旁邊,請檢查您的例子:我認爲「myObj.setCallback(的callbackHandler,3);」不會編譯,因爲setCallback的簽名是void setCallback(void (*pFunc)(void * pParam), void * pParam);和NOT void setCallback(void (*pFunc)(int * pParam), int param);