我已经使用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类型库之前取消注册.tlb类型库的麻烦),但是似乎不正确,但我可以肯定地说它不能按原样工作。
我应该做的最好的事情是什么?坚持使用C ++是不可能的!
答案 0 :(得分:1)
这是一个指向字节数组的指针,该字节数组的大小在第一个参数中提供。第二个参数的正确翻译是
pBuffer: PByte