0

コードをVC++6 から VC++10 に移行するATL COM DLL移行プロジェクトに取り組んでおり、object_map の読み込みに失敗しました

ここで swapnil_shindeが遭遇する問題と基本的に同じ です

DLLは正常に登録され、 typelibに表示されますが、 CLSIDには表示されません。 既存のコードは Window XP の VC6 では正常に動作しますが、Window 7 の VC10 では動作しません。

登録はVC10 のatlbase.hDLLRegisterServerを使用した公正な標準です。

任意のアイデアはありますか?

stackoverflow コミュニティはより活発で、さまざまな知識を持っていると思います。見逃した追加情報がありましたら、お問い合わせください。同様に提供いたします。

どうもありがとう。

編集: 管理者として実行しています。32 ビット ウィンドウ 7 で 32 ビット アプリのテストを行っています。CLSID のレジストリ全体を検索しましたが、まだ見つかりません。

4

1 に答える 1

2

OBJECT_ENTRY_AUTO代わりに、マクロを使用してオブジェクトを登録してみてください。各オブジェクトのヘッダーで、クラス宣言の後にエントリへの参照を置きます。次に例を示します。

class CMyObject { ... class decl ... };
OBJECT_ENTRY_AUTO(__uuidof(MyObject), CMyObject)

それでもうまくいかない場合は、デバッガーで (EXE として regsvr32 を使用して) 実行し、DllRegisterServer で何が起こるかを監視する必要があります。

于 2012-09-19T08:58:16.243 に答える