我们正在进行ATL COM DLL迁移项目,该项目将代码从VC++6迁移到VC++10,而对象映射未能加载。
这与swapnil_shinde此处
DLL显示为已成功注册,并显示在typelib中,但不显示在CLSID。现有代码在Window XP上与VC6配合使用效果良好,但在Window 7上与VC10配合使用效果不佳。
注册是使用VC10中atlbase.h的DLLRegisterServer的公平标准。
有人知道吗?
我们认为stackoverflow社区更活跃,知识更丰富。我们遗漏了任何其他信息,请询问,我们也会提供。
非常感谢。
编辑:我以管理员身份运行,在32位窗口7上测试32位应用程序。我已经搜索了整个注册表的CLSID仍然找不到它。
请尝试使用OBJECT_ENTRY_AUTO
宏注册对象。在每个对象的头中,在类声明之后放置对条目的引用,例如:
class CMyObject { ... class decl ... };
OBJECT_ENTRY_AUTO(__uuidof(MyObject), CMyObject)
如果这不起作用,您需要通过调试器运行它(使用regsvr32作为EXE),并观察DllRegisterServer中发生的情况。