问题描述
因为我要在C++中订阅C#编写的COM的事件.所以我希望在C#里通过unsafe的代码来声明函数指针,然后在C++里得到这个指针然后把某C++函数地址赋给该函数指针.请不要说什么用event之类的哈..publicpartialclassUserControl1:UserControl,ICom{unsafepublicvoid*prt;声明普通指针没问题但是本来函数指针在C++里应该是unsafepublicvoid(*prt)(intx,inty);但是编译不通.C#根本就不认识它..请问有没有高手知道如何才能使用函数指针阿?
解决方案
解决方案二:
c#里面publicpartialclassUserControl1:UserControl,ICom{publicintFunctionPointer;publicdelegatevoidFunctionInvoker(intx,inty);publicvoidInvokeFuncion(){Marshal.GetDelegateForFunctionPointer(newIntPtr(FunctionPointer),typeof(FunctionInvoker)).DynamicInvoke(32,43);}}在c++里面可以对FunctionPointer赋值然后调用InvokeFunction必须注意到的一点是你这个UserControl和C++代码必须在一个进程当中,否则指针地址肯定不正确的
解决方案三:
函数指针在C#里面用IntPtr类型参考也可以用使用委托
解决方案四:
解决方案五:
关注下
解决方案六:
谢谢2楼哈我知道怎么做了..强行把C++指针转换成long传到C#中,然后把这个long转换成委托就OK了..
解决方案七:
csdn中怎么没有C++论坛社区,如果有楼主的问题就有答案了,应该开个C++或C的论坛社区才行
解决方案八:
引用6楼my_zhanghuan的回复:
csdn中怎么没有C++论坛社区,如果有楼主的问题就有答案了,应该开个C++或C的论坛社区才行
谁说没有C++论坛