如何在IUnknown中实现Delphi字节

如何在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

我正在Delphi中创建一个ActiveX服务器,以替换在Delphi中创建的本机DLL,从而可以在.NET中调用它。(我是一个德尔福新手,更像一个C#guy)

原始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/RADStudio插件可以实现接口成员的存根?我已经解决了几个数据类型转换,但我仍然停留在最简单的字节上。

我发现我需要在.ridl中使用
无符号字符
,在实现中使用
字节
。我找到了答案,以及关于API和Delphi的更多一般信息