COM对象与自动化对象

时间:2012-12-13 13:24:47

标签: com automation activex

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

当我使用Automation Object时,可以使用safecall。

对于性能问题,我正在使用COM对象。是否可以使用safecall?

由于

1 个答案:

答案 0 :(得分:3)

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

顺便说一句,COM Object vs Automation对象没有性能优势:虽然Automation对象支持较慢的“late binding”via IDispatch接口,但它的客户端没有义务使用它。能够使用“早期绑定”的客户端也可以将它与Automation对象一起使用。