2016-10-04 74 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);