回调:把.net方法注入到c++中

如果是.net app调用c++代码,既可以p/invoke,也可以c++/cli,反之,如果是c++ app调用.net,只有c++/cli。现在有一应用,本来是.net调用c++,但是又需要c++捕获事件,处理后传出结果给.net,这个需求类似于回调,但一般回调时c++函数指针,现在要把.net方法变成函数指针传进去。关键的代码是Marshal::GetFunctionPointerForDelegate,注意这个方法是不支持输入泛型委托的。

 

示例

https://files.cnblogs.com/devourer/InjectFuncToCpp.7z

 

这个例子做的不完美,字符串传入c++后需要变成char*,再调用.net方法时自动转换成只有一个字符的string。为避免转换的问题,应该尽量在万能的cli中处理。

 

posted @ 2013-08-16 17:36  ^^!  阅读(305)  评论(0编辑  收藏  举报