私はCOMプログラミングの初心者で、Visual Studio 2010から基本のネイティブCOMサーバー/クライアントペアを作成します。クライアントプロジェクトとサーバープロジェクトの両方が同じソリューションに入ります。私は、クライアントプロジェクトに生成されたクライアントスタブとヘッダーファイルを含めるのが最も適切な方法を知りたいと思います。サーバープロジェクトでMIDLを作成しました。プロジェクトをコンパイルすると、_h.h、_i.c、および_p.cファイルがプロジェクトのソースディレクトリに生成されます。VS2010を使用してクライアントのネイティブCOMクライアントスタブを編集する
- 私のクライアントプロジェクトで両方の.cファイルをコンパイルする必要はありますか?
- クライアントプロジェクトでこれらをサーバプロジェクトのソースディレクトリからリンクされたファイルとして追加することで、これらをクライアントプロジェクトでコンパイルする最良の方法はありますか?
- MIDLを変更すると_h.h、_i.c、および_p.cファイルが古くなっていることをVisual Studioで知る方法はありますか、またはいつでもサーバープロジェクトを再コンパイルする必要があります私はMIDLに触れる?
- .hファイルの場所はどこですか - サーバープロジェクトのstdafx.hファイルに移動できますか?その場合は、クライアントプロジェクトのヘッダーインクルードディレクトリにサーバープロジェクトのソースディレクトリを追加するのが適切ですか?
- クライアントプロジェクトのサーバープロジェクトへの「参照」(Visual Studio Referenceの意味)が必要ですか?
さらに、この登録を無料にしたいと思います。この場合、クライアントとサーバーのマニフェストのほかに何か必要なことはありますか?
..
編集
ここでは、MSDNの記事を見て:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366830(v=vs.85).aspxは、それは私だけで、私だけで-PROC REGフリー活性化をサポートしたい場合は、生成されたファイルのことを表示されます_i.cをコンパイルしてクライアントプログラムに_h.hファイルを含める必要があります。
dlldata.cと_p.cは、プロキシDLLを作成するために使用されるように見えます。プロキシDLLは、リモートコンピュータ(リモートコンピュータまたはローカルコンピュータからのアクティブ化のための登録)をサポートしていますなぜそれがCOMサーバーのDLLが登録されていることを考えると必要とされているローカルコンピュータは、PROCのうち?COMサーバDLLは、はい、プロキシDLLが異なるのですか?)あまり
おかげで、
--Matt
ありがとうハンス、私はそれを感謝します。明確にするには - サーバー上の単一プロセスでMTAとSTAをマーシャリングする場合、プロキシ/スタブDLLが必要ですか?もしそうなら、私はここで何をしますか?_p.cとdlldata.cを別のプロジェクトにビルドし、DLLとクライアントとサーバーを別々に配布します。 さらに、__uuidキーワードのページまたはリソースを指摘できますか?私は[__uuidof](http://msdn.microsoft.com/en-us/library/zaah6a61(v = vs80).aspx)が見つかりましたか?もしそうなら、コンパイル時にreg-freeマニフェストからクライアントのどこにこの情報を得ますか? – Matt
はいとはい。 CLSIDとインターフェイスキーを展開して登録します。これは__uuidofで、_i.hファイルのインターフェイス宣言から派生しています。 –
代わりに、代わりにtlbを#importするのはなぜですか? – deltanine