Delphi XE2 で COM オブジェクトを作成しています。safecall を使用してメソッドを作成しようとしていますが、デフォルトは stdcall です。
自動化オブジェクトを使用すると、セーフコールを使用できます。
パフォーマンスの問題については、COM オブジェクトを使用しています。その上でセーフコールを使用することは可能ですか?
ありがとう
Delphi XE2 で COM オブジェクトを作成しています。safecall を使用してメソッドを作成しようとしていますが、デフォルトは stdcall です。
自動化オブジェクトを使用すると、セーフコールを使用できます。
パフォーマンスの問題については、COM オブジェクトを使用しています。その上でセーフコールを使用することは可能ですか?
ありがとう
safecall
はい、規約を使用できます。との唯一の違いは、例外駆動フローに適してsafecall
いるstdcall
ことです。safecall
つまり、Delphi 関数が の場合safecall
、例外を発生させることができます。この例外は内部でキャッチされ、適切な HRESULT に変換されます。
ところで、COM オブジェクトとオートメーション オブジェクトのパフォーマンス上の利点はありません。オートメーション オブジェクトは、インターフェイスを介して低速の "遅延バインディングIDispatch
" をサポートしますが、そのクライアントはそれを使用する義務はありません。「アーリー バインディング」を使用できるクライアントは、オートメーション オブジェクトでも使用できます。