我正在Delphi中创建ActiveX服务器,以替换在Delphi中创建的本机DLL,以便可以在.NET中对其进行调用。 (我是Delphi的新手,更喜欢C#的人)
原始DLL源中的过程原型为:
procedure Log(Device: byte); StdCall;
使用Delphi中的设计面板,我得到一个.ridl来扩展IUnkown:
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和实现中尝试了许多不同的数据类型组合,但始终会收到错误消息,指出Log函数未实现:
[dcc32错误] Unit1.pas(12):E2291缺少接口的实现 方法IDelphiCom.Log
是否有可行的组合或其他解决方法?没有人有一个表将IUnkown数据类型交叉引用到Delphi数据类型吗?是否有像ReSharper这样的Delphi / Rad Studio插件可以实现接口成员的存根?我已经想出了几种数据类型转换,但是我被困在最简单的字节上。