将Visual C++委托传递给本机C++类

问题描述:

我有一个本地类,它需要构造函数中的函数指针。我试图搜索论坛,但无法找到我正在寻找的东西。将Visual C++委托传递给本机C++类

天然类看起来是这样的:

class NativeClass{ 
    NativeClass(std::string(*callback)(std::string args)){ 
    //native code goes here 
    } 
}; 

什么是传递一个委托的最佳方式?任何帮助将不胜感激。

+0

我已经写了两个简单的函数,完美地从托管字符串转换为unmaged std :: string。调用unmanged函数我没有问题。我正在努力的是函数指针位。 – aggregate1166877 2012-02-06 20:56:21

+0

那么这是否意味着'string'在这里__does__或__ doesn't__意味着'std :: string'? – ildjarn 2012-02-06 20:58:28

+0

我编辑并将字符串更改为std :: string。所以是的,它**是** std :: string。那不是重点。如果需要,我可以转换。我需要帮助的是代表部分。 – aggregate1166877 2012-02-06 21:01:49

您需要使用Marshal.GetFunctionPointerForDelegate()来实现此目的。

请注意,这将返回一个使用stdcall调用约定的函数指针。您可以通过在委托声明中使用UnmanagedFunctionPointer属性来指定不同的调用约定。