1

我在 Delphi XE2 中创建一个 COM 对象。我正在尝试使用 safecall 创建方法,但默认值是 stdcall。

当我使用自动化对象时,可以使用 safecall。

对于性能问题,我使用的是 COM 对象。可以在上面使用safecall吗?

谢谢

4

1 回答 1

3

是的,您可以使用safecall约定。safecall和之间的唯一区别stdcallsafecall适用于异常驱动的流程。也就是说,如果您的 Delphi 函数是safecall,它可以引发异常,该异常将在内部被捕获并转换为正确的 HRESULT。

顺便说一句,COM 对象与自动化对象没有性能优势:尽管自动化对象通过接口支持较慢的“后期绑定IDispatch” ,但它的客户端没有义务使用它。能够使用“早期绑定”的客户端也可以将其与自动化对象一起使用。

于 2012-12-13T13:57:44.747 回答