gpt4 book ai didi

delphi - 如何在 IUnknown 中实现 Delphi 字节

转载 作者:行者123 更新时间:2023-12-03 19:46:58 25 4
gpt4 key购买 nike

我正在 Delphi 中创建一个 ActiveX 服务器来替换在 Delphi 中创建的 native DLL,以便可以在 .NET 中调用它。 (我是 Delphi 新手,更喜欢 C#)

原始 DLL 源中的过程原型(prototype)为:

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 method IDelphiCom.Log



有没有有效的组合,或者其他解决这个问题的方法?有没有人有一个将 IUnkown 数据类型交叉引用到 Delphi 数据类型的表? Delphi/Rad Studio 是否有某种附加组件,例如 ReSharper,可以实现接口(interface)成员的 stub ?我已经想出了几种数据类型转换,但我坚持最简单的 - 字节。

最佳答案

发现需要使用unsigned char在 .ridl 和 byte 中在实现中。我找到了答案here ,以及有关 API 和 Delphi 的更多一般信息 here .

关于delphi - 如何在 IUnknown 中实现 Delphi 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54355589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com