当前位置:编程学习 > C#/ASP.NET >>

懂函数指针的进来帮忙 .............. 注意 不是委托和事件 是函数指针

因为我要在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的论坛社区才行 --------------------编程问答--------------------
引用 6 楼 my_zhanghuan 的回复:
  csdn中怎么没有C++论坛社区,如果有楼主的问题就有答案了 ,应该开个C++ 或C的论坛社区才行
谁说没有C++论坛
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,