我使用 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/