懂函数指针的进来帮忙 .............. 注意 不是委托和事件 是函数指针
因为我要在C++中订阅C#编写的COM的事件. 所以我希望在C#里通过unsafe的代码来声明函数指针,然后在C++里得到这个指针 然后把某C++函数地址赋给该函数指针. 请不要说什么用event之类的哈..public partial class UserControl1 : UserControl,ICom
{
unsafe public void *prt ;
声明普通指针没问题
但是本来函数指针在C++里应该是
unsafe public void (*prt)(int x,int y) ;
但是编译不通. C#根本就不认识它.. 请问有没有高手知道如何才能使用函数指针阿?
--------------------编程问答-------------------- c#里面
public partial class UserControl1:UserControl,ICom
{
public int FunctionPointer;
public delegate void FunctionInvoker(int x,int y);
public void InvokeFuncion()
{
Marshal.GetDelegateForFunctionPointer(new IntPtr(FunctionPointer),typeof(FunctionInvoker)).DynamicInvoke(32,43);
}
}
在c++里面可以对FunctionPointer赋值 然后调用InvokeFunction
必须注意到的一点是 你这个UserControl和C++代码必须在一个进程当中,否则指针地址肯定不正确的 --------------------编程问答-------------------- 函数指针在C#里面用IntPtr类型
参考
http://www.cnblogs.com/wubiyu/archive/2008/09/09/1287632.html
也可以用使用委托
http://www.jaron.cn/chs_scripts/10/2003-10/20031026013911-101222.HTML --------------------编程问答-------------------- http://www.cnblogs.com/gujianxin/archive/2004/02/02/676.html --------------------编程问答-------------------- 关注下 --------------------编程问答-------------------- 谢谢2楼哈 我知道怎么做了.. 强行把C++指针转换成long传到C#中,然后把这个long转换成委托 就OK了.. --------------------编程问答-------------------- csdn中怎么没有C++论坛社区,如果有楼主的问题就有答案了 ,应该开个C++ 或C的论坛社区才行 --------------------编程问答-------------------- 谁说没有C++论坛
补充:.NET技术 , C#