我在Delphi XE2中创建一个COM对象。我试图使用safecall创建方法,但默认是stdcall。
当我使用Automation Object时,可以使用safecall。
对于性能问题,我正在使用COM对象。是否可以使用safecall?
由于
答案 0 :(得分:3)
是的,您可以使用safecall
约定。
safecall
和stdcall
之间的唯一区别是safecall
适用于异常驱动的流程。也就是说,如果您的Delphi函数是safecall
,它可以引发异常,该异常将被内部捕获并转换为正确的HRESULT。
顺便说一句,COM Object vs Automation对象没有性能优势:虽然Automation对象支持较慢的“late binding”via IDispatch
接口,但它的客户端没有义务使用它。能够使用“早期绑定”的客户端也可以将它与Automation对象一起使用。