ATL COM DLL 注册错误 0x80070716

4

1
对于那些给我的问题投反对票的人,请至少为其他成员解释一下,如果不是为了我,这并不鼓励在这个网站上进行合作。 - FreeDev
2个回答

9

出现此类错误的另一个可能原因是资源文件中缺少对.rgs文件的引用,即<my_library>.rc。

每个.rgs文件都必须在<my_library>.rc的REGISTRY部分中被引用,如下所示:

IDR_MYRESOURCE REGISTRY "myresource.rgs"

要在文本模式下打开您的.rc文件,请在解决方案资源管理器中使用其上下文菜单中的“查看代码”命令。

7
我将分享我的解决方案,也许它未来可以帮助某些人:
1)在Workspace菜单栏中选择"ResourceView"选项卡。
2)右键单击组件注册失败的资源文件夹。
3)选择"Resource Symboles..."菜单选项。
4)删除所有未使用的符号并关闭。
当我构建项目时,会出现错误C2065: IDR_<MYWrongIDRegistryClass>:未声明的标识符;在DECLARE_REGISTRY_RESOURCEID中,因此:
5)用IDR_<MYCorrectIDRegistryClass>替换IDR_<MYWrongClass>
这些步骤使我成功注册了ATL COM DLL后进行构建。
希望这能帮助任何面临同样问题的人。

有趣的是,在将另一个COM类添加到库中之前,我之前没有出现这个错误。但最终问题的原因是未使用的IDR,而是针对另一个类。无论如何,这个解决方案对我很有帮助,也可能会对那些在引入新的COM类到库后开始遇到0x80070716错误的人有所帮助。 - Anton Serov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接