2009-08-10 56 views
0

作成した.NET DLLからタイプライブラリを作成しました。私はそれをDelphiにインポートし、COMオブジェクトのインターフェイス内でメソッドを呼び出しました。 COMオブジェクトを作成しようとすると、クラスが登録されていないというエラーが表示されます。 DLLはGACに登録されているので、そうであってはいけません。他に何がこれを引き起こす可能性がありますか?「クラスが登録されていません」というメッセージのEOleSysError

答えて

1

.NETアセンブリをCOMに公開する必要があります -/codebaseキーを使用してregasm.exeを使用します。

+0

マインは、COM可視プロパティを使用し、/ tlbを使用してタイプライブラリを作成することによってCOMに公開されます。あなたがアセンブリのパスを指定したいときは、/ codebaseが覚えているからです。しかし私はそれをGACに入れましたので、私はそれをする必要はありません。私が間違っていない限り? –

+0

ComVisibleは、COMを介してクラスを使用することを可能にします。しかし、クラスIDがレジストリに追加されるようにregasmを公開しない限り、コンシューマはアセンブリの場所を検出できません。あなたは本当に異なる3つのことを混同します。 ComVisibleはCOMからのアクセスを可能にします。タイプライブラリは、消費者がアセンブリが公開可能なエンティティを検出するためのメカニズムとして機能します。 regasmでレジストリに公開すると、消費者は実際に自分が望むクラスを実装するアセンブリを見つけることができます。 – sharptooth