【发布时间】:2011-07-12 18:32:39
【问题描述】:
我有一个大问题。我有一个调用 c# dll 的 delphi5 应用程序。我想从我的 c# dll 中调用一个函数,该函数需要一个指向 delphi 过程的指针作为输入参数。在这个 c# 函数中,delphi 过程随后被调用。
我尝试使用 IntPtr 在 c# 端声明函数指针:
ourFunction(IntPtr fct){
...
helpFct = (OurType)Marshal.GetDelegateForFunctionPointer(fct, typeof(OurType));
...
}
如果我从 c# 调用该函数,一切正常。但是,如果我想从 Delphi 调用它(使用 delphi 过程作为输入参数),它会崩溃而不给我任何有关错误的信息。
这是我的德尔福代码:
hBuffer : THandle;
buffer : PInteger;
...
hBuffer:=GlobalAlloc(GMEM_fixed,SizeOf(Integer));
buffer:=GlobalLock(hBuffer);
buffer := Addr(AddDelphi);
intfRef.ourFunction(buffer^);
是否有人遇到过此类问题,或者有一些想法如何工作?
谢谢 斯蒂芬
【问题讨论】:
标签: c# delphi dll function-pointers