**************************************************
/*函数:ConnectAuthenServer
/*作用:登录验证服务器
/*返回值:只返回连接的结果。不返回验证账号的结果
/*参数:lIP 验证服务器IP地址lPort 验证服务器端口lUserName 账号lPwd 密码nLoginType 登陆类型bool WINAPI ConnectAuthenServer(const char * lIP,uint16 lPort,const char * lUserName,const char *lPwd,LoginType nLoginType,fnTestEvent * pEvent)fnTestEvent 的原型:
typedef void (*fnTestEvent) (const char * lpLogMsg);用C#调用Dll
*fnTestEvent是函数指针
该怎么给这个函数传参   用什么类型
谁能给出实例 
谢谢! 

解决方案 »

  1.   

    委托:
    public delegate void TestEvent(StringBuilder logMsg);函数声明:
    ... ConnectAuthenServer(......,TestEvent event);方法:
    void TestEventFunc(StringBuilder logMsg)
    {
    ......
    }调用:
    ConnectAuthenServer(......,new TestEvent(TestEventFunc));
      

  2.   

    委托概述--------------------------------------------------------------------------------委托具有以下特点: 1.委托类似于 C++ 函数指针,但它们是类型安全的。 2.委托允许将方法作为参数进行传递。 3.委托可用于定义回调方法。 4.委托可以链接在一起;例如,可以对一个事件调用多个方法。 5.方法不必与委托签名完全匹配。有关更多信息,请参见Covariance and Contravariance委托中的协变和逆变(C# 编程指南)。 6.C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。C# 3.0 引入了 Lambda 表达式,利用它们可以更简练地编写内联代码块。匿名方法和 Lambda 表达式(在某些上下文中)都可编译为委托类型。这些功能统称为匿名函数。有关 Lambda 表达式的更多信息,请参见匿名函数(C# 编程指南)。http://msdn.microsoft.com/zh-cn/library/ms173171.aspx
      

  3.   

    贴出代码:    [DllImport("WebManage_d.dll")]    public static extern bool ConnectAuthenServer(string validateIP, int validatePort, string Account, string passWord, int LonigType, TestEvent dd);public delegate string TestEvent(StringBuilder logMsg); 
    if (ConnectAuthenServer("192.168.0.1", 1234, "aaa", "aaa", 1, new TestEvent(TestEventFunc)))
            {
                        }
            else
            {
                        }public void TestEventFunc(StringBuilder logMsg)
        {    }
    出现错误  应该是参数类型错了  
    无法加载 DLL“WebManage_d.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
    typedef void (*fnTestEvent) (const char * lpLogMsg);
    谁能把这句解释一下啊  谢谢
      

  4.   

    找不到WebManage_d.dll或者它需要别的dll
      

  5.   

    dll应该没错   是没找到匹配的函数
    应该就是最后一个参数的类型不对
    所以提示:找不到指定的模块
    有高手能解决吗?
      

  6.   

    你还是检查一下dll的名称和位置吧
      

  7.   

    dll我放在Bin目录里  
    WebManage_d.dll没错啊
      

  8.   

    bin下面没有debug?
    反正要跟你的程序在一块
      

  9.   

    是在网站的Bin目录里面。
    网站有3个文件夹  
    Administrator  所有的网页都在里面 包括调用Dll的页面
    App_Data    这个是放数据库的
    BIN             dll就在这个文件夹里面我在  Administrator  文件夹里也放了这个DLL  
    还是出错.....
      

  10.   

    似乎可以结贴了  
    soaringbird 谢谢你:)
    问题应该在Dll上