问题描述
DLL:我使用DELPHI编写一个DLL,其中参数为一函数指针地址,该函数接收到DLL做相关处理后实现回调。windowform应用程序:我希望在.NET中将一函数指针传递进去,等DLL处理完回调我的函数。希望能够提供DEMO,分数不够可以再加!
解决方案
解决方案二:
....大概是declaer一个函数再用委托来做吧帮顶
解决方案三:
试过用委托了,调用时提示内存地址错误或损坏!
解决方案四:
unsafe下用吧/////////////
解决方案五:
请问有没有例子啊?分数不够再加!
解决方案六:
问问jinjazz,他可能知道
解决方案七:
DemopublicDelegatevoidCSharpPro(intnValue);publicvoidPro(intnValue){string="abc";}[DllImport("DEMO.dll",CharSet=CharSet.Ansi)]publicstaticexternintDEMOProc(stringparam1,CSharpProProc);DEMOProc("abcdefg",newCSharpPro(Pro));//调用。
解决方案八:
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了![DllImport(DLLName,CharSet=CharSet.Ansi)]publicstaticexternBooleanRunServer(intoutTime,intsendTime,intport,[MarshalAs(UnmanagedType.FunctionPtr)]dlBussPack485dealFunc);
解决方案九:
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了![DllImport(DLLName,CharSet=CharSet.Ansi)]publicstaticexternBooleanRunServer(intoutTime,intsendTime,intport,[MarshalAs(UnmanagedType.FunctionPtr)]dlBussPack485dealFunc);楼上这位兄弟,我试过你这种方法,但不行,不知道是不是我自己弄错,你给我一个DEMO,如果可以分就给你!
解决方案十:
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了![DllImport(DLLName,CharSet=CharSet.Ansi)]publicstaticexternBooleanRunServer(intoutTime,intsendTime,intport,[MarshalAs(UnmanagedType.FunctionPtr)]dlBussPack485dealFunc);楼上这位兄弟,我试过你这种方法,但不行,不知道是不是我自己弄错,你给我一个DEMO,如果可以分就给你!
解决方案十一:
回调的话应该采用6楼的方法
解决方案十二:
这应该叫委托吧!路过学习!
解决方案十三:
TBusinessPackege=function(pack485:arrayofTMessage485;varreturnPack485:arrayofTMessage485;count:integer):integer;stdcall;(注意上面函数指针的stadcall)。functionRunServer(outTime:integer;sendTime:integer;port:integer;func:TBusinessPackege):boolean;stdcall;
解决方案十四:
看到了C#历害的一面