タイプライブラリのない32ビットATL COMコンポーネントがあります。クラスには、いくつかのインタフェースを実装する1つのクラスのクラスファクトリがあります。COMインターフェイスのマーシャリングを有効にするためには何が必要ですか?
インプロセスサーバーとして使用すると、クライアント側がCoCreateInstance()を呼び出し、オブジェクトがインスタンス化され、QueryInterface()が要求されたインターフェイスへのポインタを取得します。しかし、COM +にコンポーネントを置くと、クラスをインスタンス化できなくなりました.CoCreateInstance()はE_NOINTERFACEを返します。
COM +は型ライブラリがないためにマーシャリングを実行できないと考えています。これはどのように行うのかわかりません。これを解決するために型ライブラリを生成して登録する必要がありますか、それとも他の方法がありますか?
ATLプロジェクトウィザードは、通常、プロジェクト出力のリソースとして埋め込まれ、コーカサスに登録されたタイプライブラリを持つように設定されています。 – Richard
はい、私はそれを知っています。問題は、IDLファイルやタイプライブラリが提供されていない、すでにMicrosoftによって定義されたインタフェースを実装することです。だからこそ、私は、カスタム定義型の型ライブラリを完全に改革するのに苦労するでしょう。 – sharptooth
fyiでは、COMのコンテキストで「マーシャリング」、つまりJavaのコンテキストで「整列化」しています。 :-) –