回调:把.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中处理。