我正在delphi中创建一个activex服务器来替换在delphi中创建的本地dll,以便在.net中调用它。(我是德尔福的新手,更像是一个C的家伙)
原始dll源中的过程原型是:
procedure Log(Device: byte); StdCall;
使用Delphi中的“设计”面板,我得到了一个.ridl,它扩展了以下内容:
interface IDelphiCom: IUnknown
{
[id(0x00000065)]
HRESULT _stdcall Log([in] byte Device);
};
为了实施,我有:
interface
type
TTestCom = class(TTypedComObject, IDelphiCom)
protected
function Log(Device: byte ): HResult; StdCall;
end;
implementation
function TTestCom.Log(Device: byte): HRESULT; StdCall;
begin
result:=0;
end;
我在.ridl和实现中尝试了许多不同的数据类型组合,但总是得到一条错误消息,即日志函数未实现:
[DCC32错误]unit1.pas(12):E2291缺少接口实现
方法idelphicom.log
有没有一种组合能起作用,或者用其他方法来解决这个问题?有没有人有一个表可以交叉引用iunkown数据类型和delphi数据类型?有没有像resharper这样的delphi/rad studio插件可以实现接口成员的存根?我已经计算出了几个数据类型转换,但我仍然停留在最简单的字节上。