我有一个大问题。我有一个调用 c# dll 的 delphi5 应用程序。我想从我的 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^);
有没有人遇到过此类问题,或者有一些关于它如何工作的想法?
谢谢 斯特凡
最佳答案
如果是 Delphi 5,那是 .NET 之前的版本。最好的办法是 regasm
C# 程序集,并从 Delphi 5 应用程序中将其作为 COM 对象访问,以便正常工作。
当然,您可能还需要检查并确保调用与 COM 兼容。
关于c# - 在 c# dll 中调用 delphi5 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5261010/