私はアウトプロセスCOMサーバーを実装する方法を学び、このコードプロジェクトの記事「ローカルCOMサーバーとクライアントの構築:ステップバイステップの例」に出くわしました。
ビルドでき、正常に動作しますが、プロキシ/スタブDLLはどこにありますか?私が見ることができるのは、ビルド中にプロキシ/スタブコードが生成されるIDLファイルだけです。しかし、DLLはどのように構築され、どこにありますか?
私はアウトプロセスCOMサーバーを実装する方法を学び、このコードプロジェクトの記事「ローカルCOMサーバーとクライアントの構築:ステップバイステップの例」に出くわしました。
ビルドでき、正常に動作しますが、プロキシ/スタブDLLはどこにありますか?私が見ることができるのは、ビルド中にプロキシ/スタブコードが生成されるIDLファイルだけです。しかし、DLLはどのように構築され、どこにありますか?
簡単に言うと、COMはインターフェイスで使用されるすべてのタイプをマーシャリングする方法を知っているため、すべてのインターフェイスが「oleautomation」とマークされているため、oleaut32.dllがマーシャリングを実行します。
「oleautomation」が欠落している場合、またはCOMがデフォルトでマーシャリングする方法を認識しないタイプが指定された場合(ここのリストを参照)、デフォルト以外のマーシャラーとそのスタブが必要になります。
COMがインターフェイスをマーシャリングするのを支援するには、プロキシ/スタブプロジェクトが必要です。VisualStudioを使用してATLC++プロジェクトを作成する場合、通常、PSサフィックスが自動的に作成されたセカンダリプロジェクトがあり、これがプロキシ/スタブDLLです。ただし、それがなくても問題なく動作している可能性があります(カスタムマーシャリングなどを処理する必要があったとしても、個人的にはビルドして使用する必要はありませんでした)。プロジェクトにタイプライブラリを提供すると、それが登録され、特定の条件が満たされます。COMは自動プロキシ/スタブペアを提供します。
ボーナスリーディング: