3

サードパーティのIDLファイルがあり、コンパイルするとヘッダーと_i.cファイルが生成されます。これら3つのファイルはすべて、VisualStudio2010プロジェクトの一部です。(これまでのところ、COMの初期化を試みた以外は、プロジェクトは空です。)

を呼び出すことでプロジェクトをコンパイルできます

CoInitialize(NULL);
CoCreateInstance(stuff);

実行時に、CoCreateInstance()は「クラスが登録されていません」というエラーを返します。

私がインターネットで見つけることができるすべては、DLLファイルまたはEXEファイルでzippy32を実行することによってCOMオブジェクトを登録することを言います。しかし、私はIDLファイルしか持っていません。プロジェクトによって生成されたEXEファイルを登録しようとしましたが、モジュールが「ロードされましたが、エントリポイントDLLRegisterServerが見つかりませんでした」というエラーが発生しました。

正直なところ、他に何を試すべきかわかりません。

4

2 に答える 2

2

IDL ファイル(インターフェイス定義ファイル) は、宣言された型の実装を提供しません。IDL ファイルを実装する DLL でコーディングされたクラスと通信する方法を指定するだけです。

IDL ファイルだけでは不十分です。それを実装する DLL も必要になります。

于 2011-07-21T22:45:43.737 に答える
2

IDL ファイルは、実装ではなくインターフェイスを定義します。文字通り、このサードパーティ製コンポーネントのすべてが IDL ファイルである場合、登録できるものは何もありません。

IDL ファイルには、サードパーティ コード呼び出しを実装するインターフェイスが記述されている可能性があります。その場合、あなたはそれらを CoCreateInstance しません。彼らはあなたを CoCreateInstance するかもしれません。しかし、情報量を考えると、実際のサードパーティ コンポーネントが不足しているか、間違ったものを CoCreateInstance に渡している可能性があります。

于 2011-07-21T22:47:23.937 に答える