5

DLL の登録に問題があります。私のOSはWindows 7(x64)です。

私は2つの異なる方法でそれを行います:

1) regsvr32 を使用します。「DllRegisterServer ... successeed」というメッセージが表示されますが、レジストリに CLSID が見つかりません。(そして、この CLSID を使用してコンポーネントのインスタンスを作成しようとすると、「クラスが登録されていません」というエラーが表示されます)。作成した)。

2) DLL を明示的にロードし、DllRegisterServer を呼び出します。この場合、DllRegisterServer は S_OK を返しますが、それでもレジストリで CLSID を見つけることができず、「クラスが登録されていません」というエラーが発生します。

コードが正しいと確信しているので (私の OS だけでは動作しないため)、問題は OS にあるようです。誰かがそのような問題に直面しましたか?

4

3 に答える 3

1

http://msdn.microsoft.com/en-us/library/aa384232(v=vs.85).aspxで説明する必要があります

dll が 32 ビットか 64 ビットかに応じて、レジストリ キーは別々の場所に作成されます。

于 2011-06-25T17:34:46.367 に答える
0

同じ問題を解決しました。既存の 32 ビット COM 新しいインターフェイス、実装 (MyNewClass)、および rgs ファイルに手動で追加しました。しかし、SysWow64\regsvr32.exe を使用して COM を正常に登録したときに、ProgId/CLSID が HKCR\CLSID または HKCR\Wow6432Node\CLSID の下に表示されないことに気付きました。

だから、実際には私はいくつかのことを見逃しました:

  1. MyApp.cpp ファイルの BEGIN_OBJECT_MAP の下に OBJECT_ENTRY を追加する必要がありました
  2. DECLARE_REGISTRY_RESOURCEID(IDR_xxx) を MyNewClass.h ファイルに追加します

リソース.h

IDR_xxx 105 を定義します。

既存のCom.rc

IDR_xxx レジストリは破棄可能 "MyNewClass.rgs"

于 2011-09-14T20:37:56.420 に答える