[杂谈]Delphi 与 VC 通过接口交互时的一点问题的说明

首先,调用都是使用 stdcall,但是在返回接口类型时,VC 和 Delphi 对调用的处理不一致,造成接口无法正常使用。

通过查看返回接口和普通类型的值的对比,可以发现 Delphi 在实现返回接口的调用时,对对象的地址使用了esp+8,而对普通类型时,对象的地址取的是esp+4,这样就造成两者对应的对象原始地址错位,无法使用。

解决方法返回值改为通过参数传递就好了。

分享到: