将Visual C++委托传递给本机C++类
问题描述:
我有一个本地类,它需要构造函数中的函数指针。我试图搜索论坛,但无法找到我正在寻找的东西。将Visual C++委托传递给本机C++类
天然类看起来是这样的:
class NativeClass{
NativeClass(std::string(*callback)(std::string args)){
//native code goes here
}
};
什么是传递一个委托的最佳方式?任何帮助将不胜感激。
答
您需要使用Marshal.GetFunctionPointerForDelegate()
来实现此目的。
请注意,这将返回一个使用stdcall
调用约定的函数指针。您可以通过在委托声明中使用UnmanagedFunctionPointer
属性来指定不同的调用约定。
我已经写了两个简单的函数,完美地从托管字符串转换为unmaged std :: string。调用unmanged函数我没有问题。我正在努力的是函数指针位。 – aggregate1166877 2012-02-06 20:56:21
那么这是否意味着'string'在这里__does__或__ doesn't__意味着'std :: string'? – ildjarn 2012-02-06 20:58:28
我编辑并将字符串更改为std :: string。所以是的,它**是** std :: string。那不是重点。如果需要,我可以转换。我需要帮助的是代表部分。 – aggregate1166877 2012-02-06 21:01:49