关于.net平台调用传递函数指针问题

springcsc1982 2008-06-20 02:59:18
DLL:我使用DELPHI编写一个DLL,其中参数为一函数指针地址,该函数接收到DLL做相关处理后实现回调。
windowform应用程序:我希望在.NET中将一函数指针传递进去,等DLL处理完回调我的函数。

希望能够提供DEMO,分数不够可以再加!
...全文
257 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
生财 2008-06-20
  • 打赏
  • 举报
回复
看到了C#历害的一面
gxj760998 2008-06-20
  • 打赏
  • 举报
回复
TBusinessPackege = function(pack485:array of TMessage485;var returnPack485 :array of TMessage485;count :integer) : integer;stdcall;(
注意上面函数指针的stadcall)。
function RunServer(outTime:integer;sendTime:integer;port:integer;func:TBusinessPackege) :boolean;stdcall;


EinsteinSu 2008-06-20
  • 打赏
  • 举报
回复
这应该叫委托吧!路过学习!
zxkid 2008-06-20
  • 打赏
  • 举报
回复
回调的话 应该采用6楼的方法
springcsc1982 2008-06-20
  • 打赏
  • 举报
回复
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了!
[DllImport(DLLName, CharSet = CharSet.Ansi)]
public static extern Boolean RunServer(int outTime, int sendTime, int port, [MarshalAs(UnmanagedType.FunctionPtr)] dlBussPack485 dealFunc);


楼上这位兄弟,我试过你这种方法,但不行,不知道是不是我自己弄错,你给我一个DEMO,如果可以分就给你!
springcsc1982 2008-06-20
  • 打赏
  • 举报
回复
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了!
[DllImport(DLLName, CharSet = CharSet.Ansi)]
public static extern Boolean RunServer(int outTime, int sendTime, int port, [MarshalAs(UnmanagedType.FunctionPtr)] dlBussPack485 dealFunc);


楼上这位兄弟,我试过你这种方法,但不行,不知道是不是我自己弄错,你给我一个DEMO,如果可以分就给你!
gxj760998 2008-06-20
  • 打赏
  • 举报
回复
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了!
[DllImport(DLLName, CharSet = CharSet.Ansi)]
public static extern Boolean RunServer(int outTime, int sendTime, int port, [MarshalAs(UnmanagedType.FunctionPtr)] dlBussPack485 dealFunc);
家鸣 2008-06-20
  • 打赏
  • 举报
回复
Demo

public Delegate void CSharpPro(int nValue);
public void Pro(int nValue)
{
string = "abc";
}

[DllImport( "DEMO.dll ",CharSet=CharSet.Ansi)]
public static extern int DEMOProc(string param1, CSharpPro Proc);

DEMOProc("abcdefg ",new CSharpPro(Pro));//调用。
HimeTale 2008-06-20
  • 打赏
  • 举报
回复
问问jinjazz,他可能知道
springcsc1982 2008-06-20
  • 打赏
  • 举报
回复
请问有没有例子啊?分数不够再加!
zhnzzy 2008-06-20
  • 打赏
  • 举报
回复
unsafe下用吧/////////////
springcsc1982 2008-06-20
  • 打赏
  • 举报
回复
试过用委托了,调用时提示内存地址错误或损坏!
HimeTale 2008-06-20
  • 打赏
  • 举报
回复
....大概是declaer一个函数再用委托来做吧
帮顶

110,567

社区成员

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

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

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