【问题标题】:ATL COM DLL REGISTER ERROR 0x80070716ATL COM DLL 寄存器错误 0x80070716
【发布时间】:2026-01-20 13:05:01
【问题描述】:

在 Win7 x64 下使用 ATL Dll x64 完成 regsvr32 时出现错误 0x80070716。

我在提出问题之前进行了搜索,并使用其他网站上的一些线程进行了验证,例如这个http://www.tek-tips.com/viewthread.cfm?qid=1085835 和另一个这里是http://forums.codeguru.com/printthread.php?t=366207。 但是那些线程并没有解决我的问题。

如果有人可以帮助我,请告诉我。

【问题讨论】:

  • 对于对我的问题投反对票的机构,至少为其他成员解释一下,如果不是对我来说,这不鼓励在本网站进行合作

标签: visual-studio-2012 com atl regsvr32


【解决方案1】:

我将分享我的解决方案,也许它会在未来帮助一些人:

1) 在工作区菜单栏中选择“ResourceView”选项卡。

2) 右键单击​​注册失败组件的资源文件夹。

3) 选择“资源符号...”菜单选项。

4) 删除所有未使用的符号并关闭。

当我构建项目时,我收到错误 error C2065: IDR_<MYWrongIDRegistryClass> : undeclared identifier;在DECLARE_REGISTRY_RESOURCEID 所以:

5) 将IDR_<MYWrongClass> 替换为IDR_<MYCorrectIDRegistryClass>

这些步骤使我的 ATL COM DLL 在我构建后成功注册。

希望这对面临同样问题的人有所帮助。

【讨论】:

  • 有趣的是,在将另一个 COM 类添加到库中之前我没有出现此错误。但最终问题的原因是未使用的 IDR 而是另一个类。无论如何,这个解决方案帮助了我,并且可以帮助那些在库中引入新的 COM 类后开始出现 0x80070716 错误的人。
【解决方案2】:

导致此类错误的另一个可能原因是资源文件中缺少 .rgs 文件的条目,即 .rc

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

IDR_MYRESOURCE REGISTRY "myresource.rgs"

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

【讨论】: