0

我们正在开发一个ATL COM DLL迁移项目,将代码从VC++6 迁移到 VC++10,并且object_map 加载失败

和这里swapnil_shinde遇到的问题基本一样

显示为注册成功的DLL,并显示在typelib中,但不在CLSID中。 现有代码适用于 Window XP 上的 VC6,但不适用于 Window 7 上的 VC10。

注册是使用VC10 中 atlbase.h 的DLLRegisterServer的公平标准。

有任何想法吗?

我们认为 stackoverflow 社区更活跃,知识更丰富。我们错过的任何其他信息,请询问,我们也会提供。

非常感谢。

编辑: 我以管理员身份运行,在 32 位窗口 7 上进行 32 位应用程序测试。我在整个注册表中搜索了 CLSID 仍然找不到它。

4

1 回答 1

2

尝试使用OBJECT_ENTRY_AUTO宏注册您的对象。在每个对象的标头中,在类声明之后放置对条目的引用,例如:

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

如果这不起作用,您需要通过调试器运行它(使用 regsvr32 作为 EXE)并观察 DllRegisterServer 中发生的情况。

于 2012-09-19T08:58:16.243 回答