我有一个大问题。我有一个Delphi 5应用程序,调用一个C# DLL。我想从我的C# DLL调用一个需要指向Delphi过程的指针作为输入参数的函数。在这个C#函数中,之后调用Delphi过程。
我尝试使用IntPtr在C#端声明函数指针:
ourFunction(IntPtr fct){
...
helpFct = (OurType)Marshal.GetDelegateForFunctionPointer(fct, typeof(OurType));
...
}
如果我从C#调用该函数,则一切正常。但是,如果我想从Delphi(使用Delphi过程作为输入参数)调用它,则会崩溃,而不提供有关错误的任何信息。
以下是我的Delphi代码:
hBuffer : THandle;
buffer : PInteger;
...
hBuffer:=GlobalAlloc(GMEM_fixed,SizeOf(Integer));
buffer:=GlobalLock(hBuffer);
buffer := Addr(AddDelphi);
intfRef.ourFunction(buffer^);
有人遇到过这样的问题吗?或者对它可能如何工作有一些想法吗?
谢谢 斯特凡