C#调用C++ DLL问题(回调函数)!!!急

橘子ZT 2010-01-28 02:53:20
RegReLoginSuccessCallBackFunc
【函数功能】
注册平台重登录服务器平台成功消息回调函数,调用者注册该函数后,DLL在每次上行链路网络断开重登录成功后都会调用注册的函数通知调用者已经重登录成功。
【预置条件】
【函数原型】
typedef void (*pReLoginSuccessCallBackFv) (void);
void RegReLoginSuccessCallBackFunc( pReLoginSuccessCallBackFv pFv );

我怎么才能c#下调用这个回调函数啊,一旦DLL重登录了,我能马上知道。
...全文
233 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
老Key 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lianshaohua 的回复:]
你就声明一个delegate,然后把相应型构的函数传进去就行了呗;

public delegate void CallBackFunc();

public void xx()
{
  console.writeln("call back");
}

private CallBackFunc func;//func=new CallBackFunc(xx);
导入dll的函数后,调用:

RegReLoginSuccessCallBackFunc(func);
[/Quote]思路的确是这样的
Greg_han 2010-01-29
  • 打赏
  • 举报
回复
学习啦
RFEZGC 2010-01-29
  • 打赏
  • 举报
回复
DLL在每次上行链路网络断开重登录成功后都会调用注册的函数通知调用者已经重登录成功,声明为事件吧,
wuyq11 2010-01-28
  • 打赏
  • 举报
回复
using System.Runtime.InteropServices;
定义委托
public delegate
ztenv 2010-01-28
  • 打赏
  • 举报
回复
是的,
橘子ZT 2010-01-28
  • 打赏
  • 举报
回复
[ DllImport( "DCSPClientDLL.dll", EntryPoint="Login",CharSet=CharSet.Ansi)]
public static extern void RegReLoginSuccessCallBackFunc( ReLoginSuccessBackHandle pFv );

// 重登录成功回调函数
public delegate void ReLoginSuccessBackHandle();

public void CallBackxx()
{
WriteToConsole( "重登录平台成功\n" );
}

//注册回调函数
public void RegCallBackFunc()
{
ReLoginSuccessBackHandle rlsbh = new ReLoginSuccessBackHandle(CallBackxx);
RegReLoginSuccessCallBackFunc(rlsbh);
}

是不是这样啊?
ztenv 2010-01-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zt74 的回复:]
谢谢楼上啊
关键是怎么调用啊,这样就能一直调用吗?每次DLL重登录了我都可以知道?
[/Quote]
那要看dll内部的实现了,如果是我的话,每次登录后,都会清空回调函数的指针,这样你就必须再次注册回调函数,如果没有清空函数指针(不安全),你可以不用再次注册
xujiaoxiang 2010-01-28
  • 打赏
  • 举报
回复
是回调的,每次DLL重登录了都会调用
public void xx()
{
console.writeln("call back");
}

你测试一下就知道了
橘子ZT 2010-01-28
  • 打赏
  • 举报
回复
谢谢楼上啊
关键是怎么调用啊,这样就能一直调用吗?每次DLL重登录了我都可以知道?
ztenv 2010-01-28
  • 打赏
  • 举报
回复
你就声明一个delegate,然后把相应型构的函数传进去就行了呗;

public delegate void CallBackFunc();

public void xx()
{
console.writeln("call back");
}

private CallBackFunc func;//func=new CallBackFunc(xx);
导入dll的函数后,调用:

RegReLoginSuccessCallBackFunc(func);

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧