C#与DLL之间能实现回调吗?

wukk 2005-06-16 10:43:51
我现在有这样一个需求,C#要调用DLL中的一个函数,在这个函数执行的过程当中要在C#编写的界面上显示一些信息,如果是VC,可以在DLL函数中传入一个回调函数作为参数,但是在C#中如何实现此类功能?谢谢
...全文
196 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouxm2003 2005-07-08
  • 打赏
  • 举报
回复
忘记贴上显示函数了:
public void ShowMsg(string msg)
{
this.Msg_Info.AppendText(msg);//Msg_Info 是textbox控件
}
zhouxm2003 2005-07-08
  • 打赏
  • 举报
回复
碰到同样的问题,我是用C写的dll在c#中调用,但是想让dll中的c函数中的printf显示在c#界面上,我用委托如下,但运行报错:

public delegate void BackFun(string Msg);

Ess.SetMsgFun(new BackFun(this.ShowMsg));//Ess是通过DllImport申明的dll函数的一个类
Ess.Init();//Init为dll中的函数

说明:SetMsgFun 为dll中的c的回调函数设置函数,实现如下:
Dll中的c代码:
//回调函数
typedef void(*pmsg)(char *);
void ShowMsg(pmsg CallMsg,char *StrMsg)
{
CallMsg(StrMsg);
}

//设置Dll的消息展示回调函数
pmsg FunMsg;
void SetMsgFun(pmsg CallMsg)
{
FunMsg = CallMsg;
}

//调用的函数代码
int Init()
{
ShowMsg(FunMsg," 登录服务器完成\n");
}
tiaoci 2005-07-07
  • 打赏
  • 举报
回复
用委托正确,就像这样:

public delegate void Callback(参数);
y1g1y1 2005-07-07
  • 打赏
  • 举报
回复
能够向DLL中传递回调函数

使用委托。
zhouxm2003 2005-07-07
  • 打赏
  • 举报
回复
顶!! 如何调用回调用函数,我编译时没有错误,但运行时报"引用了没有实例化的对像"
wukk 2005-06-16
  • 打赏
  • 举报
回复
DLL是VC写的
怎么传递回调函数,给个示例,或者网络资源
谢谢
quickball 2005-06-16
  • 打赏
  • 举报
回复
能够向DLL中传递回调函数
54783szg 2005-06-16
  • 打赏
  • 举报
回复
C#能调VC的DLL,但VC用不了C#的类库(DLL),除非VC用托管!
gzlucky 2005-06-16
  • 打赏
  • 举报
回复
你所说的DLL,是win32DLL,还是.Net中的类库?

如果是.Net的类库,这当中的方法很多,你可以使用 Observe的方式,或者使用.Net中的delegate event的方式。
pancult 2005-06-16
  • 打赏
  • 举报
回复
DLL中的函数要返回一个值,或者是传递进DLL的参数用实参..调用unsafe的方法可以使用传递地址参数来达到改变参数值的相互引用~
jxyctian 2005-06-16
  • 打赏
  • 举报
回复
頂!不懂VC
wukk 2005-06-16
  • 打赏
  • 举报
回复
错误提示:

Modulue:
File:i386\chkesp.c
Line:42

The value of ESP was not properly saved across a function call.This is usually a result of calling a function declared wtih one calling convention with a function pointer declared with a different calling convention

我在dll中声明的是stdcall,C# 中是默认dllimport
wukk 2005-06-16
  • 打赏
  • 举报
回复
我用VC写了一个DLL,DLL有一个函数,它的参数是一个回调函数的指针,然后在C#里面调用它
但是老出现致命错误,提示“CHKESP”错误
但是我用VC调用这个DLL,正常执行,为什么?
急!急!急!急!急!
谢谢

110,570

社区成员

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

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

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