1

Delphi XE2 で COM オブジェクトを作成しています。safecall を使用してメソッドを作成しようとしていますが、デフォルトは stdcall です。

自動化オブジェクトを使用すると、セーフコールを使用できます。

パフォーマンスの問題については、COM オブジェクトを使用しています。その上でセーフコールを使用することは可能ですか?

ありがとう

4

1 に答える 1

3

safecallはい、規約を使用できます。との唯一の違いは、例外駆動フローに適してsafecallいるstdcallことです。safecallつまり、Delphi 関数が の場合safecall、例外を発生させることができます。この例外は内部でキャッチされ、適切な HRESULT に変換されます。

ところで、COM オブジェクトとオートメーション オブジェクトのパフォーマンス上の利点はありません。オートメーション オブジェクトは、インターフェイスを介して低速の "遅延バインディングIDispatch" をサポートしますが、そのクライアントはそれを使用する義務はありません。「アーリー バインディング」を使用できるクライアントは、オートメーション オブジェクトでも使用できます。

于 2012-12-13T13:57:44.747 に答える