如何在IUnknown中实现Delphi字节
我正在Delphi中创建一个ActiveX服务器,以替换在Delphi中创建的本机DLL,从而可以在.NET中调用它。(我是一个德尔福新手,更像一个C#guy) 原始DLL源中的过程原型为:如何在IUnknown中实现Delphi字节,delphi,com,activex,rad-studio,Delphi,Com,Activex,Rad Studio,我正在Delphi中创建一个ActiveX服务器,以替换在Delphi中创建的本机DLL,从而可以在.NET中调用它。(我是一个德尔福新手,更像一个C#guy) 原始DLL源中的过程原型为: procedure Log(Device: byte); StdCall; 使用Delphi中的设计面板,我得到一个.ridl,它扩展了以下内容: interface IDelphiCom: IUnknown { [id(0x00000065)] HRESULT _stdcall Lo
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/RADStudio插件可以实现接口成员的存根?我已经解决了几个数据类型转换,但我仍然停留在最简单的字节上。我发现我需要在.ridl中使用
无符号字符
,在实现中使用字节
。我找到了答案,以及关于API和Delphi的更多一般信息