【发布时间】:2019-06-18 17:11:52
【问题描述】:
我正在 Delphi 中创建一个 ActiveX 服务器来替换在 Delphi 中创建的本机 DLL,以便可以在 .NET 中调用它。 (我是 Delphi 新手,更喜欢 C#)
原DLL源中的程序原型为:
procedure Log(Device: byte); StdCall;
使用 Delphi 中的设计面板,我得到一个扩展 IUnkown 的 .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 和实现中尝试了许多不同的数据类型组合,但总是得到 Log 函数未实现的错误消息:
[dcc32 Error] Unit1.pas(12): E2291 Missing implementation of interface 方法 IDelphiCom.Log
是否有有效的组合或其他方法来解决这个问题?有没有人有一个表可以将 IUnkown 数据类型交叉引用到 Delphi 数据类型? Delphi/Rad Studio 是否有某种附加组件,例如 ReSharper,可以实现接口成员的存根?我已经想出了几种数据类型转换,但我坚持最简单的 - 字节。
【问题讨论】:
标签: delphi com activex rad-studio