COM プログラミングは初めてで、Visual Studio 2010 から基本的なネイティブ COM サーバーとクライアントのペアを作成しています。クライアント プロジェクトとサーバー プロジェクトの両方が同じソリューション内にあります。生成されたクライアント スタブとヘッダー ファイルをクライアント プロジェクトに含める最も適切な方法を知りたいです。サーバー プロジェクトに MIDL を作成しました。プロジェクトをコンパイルすると、プロジェクト ソース ディレクトリに _h.h、_i.c、および _p.c ファイルが生成されます。
- クライアント プロジェクトで両方の .c ファイルをコンパイルする必要がありますか?
- サーバー プロジェクトのソース ディレクトリからクライアント プロジェクトにリンクされたファイルとして追加することにより、クライアント プロジェクトでこれらをコンパイルする最良の方法はありますか?
- MIDL を変更したときに _h.h、_i.c、および _p.c ファイルが古くなっていることを Visual Studio が認識できるようにする方法はありますか。ミドル?
- .h ファイルを配置するのに最適な場所はどこですか? サーバー プロジェクトの stdafx.h ファイルに配置できますか? その場合、サーバー プロジェクトのソース ディレクトリをクライアント プロジェクトのヘッダー インクルード ディレクトリに追加するのは適切ですか?
- クライアント プロジェクトには、サーバー プロジェクトへの "参照" (Visual Studio 参照の意味で) が必要ですか?
さらに、この登録を無料にしたいと思います。この場合、クライアントとサーバーのマニフェストを用意する以外に、他に何かする必要がありますか?
..
編集
ここで MSDN の記事を見る: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366830(v=vs.85).aspx、必要な場合のみ生成されたファイルのようです。インプロセスでの reg-free アクティベーションをサポートするには、_i.c をコンパイルし、クライアント プログラムに _h.h ファイルを含めるだけです。
dlldata.c と _p.c は、リモート コンピューターでの登録をサポートするプロキシ DLL の作成に使用されているようです (リモート コンピューターによるアクティブ化のため? またはローカル コンピューターのアウト オブ プロセス? ローカル コンピューターに必要な場合は、アウトCOM サーバーの DLL が登録されているのに、なぜそれが必要なのですか? COM サーバー DLL はプロキシ DLL とは異なりますよね?)
どうもありがとう、
--マット