c++ - 我将类型库 ( .tlb ) 导入到 Delphi 中,但函数参数似乎不正确。我该如何解决?

标签 c++ delphi idl

我使用 midl 将 .idl 文件转换为 .tlb。当我将此 .tlb 文件导入 Delphi (XE7) 时,它会转换此 Write 函数,它是

interface IWTSVirtualChannel : IUnknown
...

HRESULT Write(
    [in]            ULONG               cbSize,
    [in, size_is(cbSize)] BYTE          *pBuffer,
    [in]            IUnknown            *pReserved          // must be NULL
    );

进入 _TLB.pas 文件中的此 Delphi 代码。

function Write(
 cbSize: LongWord; 
 var pBuffer: Byte; 
 const pReserved: IUnknown): HResult; stdcall;

但是第二个参数显然不正确。在我看来应该是这样的

 pBuffer : PAnsiChar;

参数为c类型字符串,传入Write发送。

所以在我看来,我应该只编辑 _TLB.pas 文件并修复它。还有一些其他程序也有此问题。

但我不太情愿,因为每次更改 .idl 时我都必须重做编辑(希望不要太频繁;伴随着在重新导入之前取消注册 .tlb 类型库的相关麻烦)但是它看起来不对,但我相当确定它不会按原样工作。

我应该做的最好的事情是什么?坚持使用 C++ 不是一种选择!

最佳答案

这是一个指向字节数组的指针,其大小在第一个参数中提供。第二个参数的正确翻译是

pBuffer: PByte

关于c++ - 我将类型库 ( .tlb ) 导入到 Delphi 中,但函数参数似乎不正确。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55518772/

相关文章:

C++ 代码审查

c++ - 虚函数的动态绑定(bind)

c++ - 检查模板类的某些特化是否是特定类的基类的特征

delphi - 如何在 Canvas 上绘制文本,在绘制的文本下没有白色背景?

delphi - 比较屏幕截图并获取第一个像素变化的屏幕坐标

c++ - 在 *.idl 文件中包含 class.h 文件会产生错误

c++ - 两个 bb 之间的重叠分数

delphi - 代码编辑器无法识别俄语字符

c++ - 在 IDL 文件上使用 opendds_idl 工具时出现 fatal error C1083