ATL COM DLL 寄存器错误 0x80070716
Posted
技术标签:
【中文标题】ATL COM DLL 寄存器错误 0x80070716【英文标题】:ATL COM DLL REGISTER ERROR 0x80070716 【发布时间】:2014-12-24 04:14:11 【问题描述】:在 Win7 x64 下使用 ATL Dll x64 完成 regsvr32 时出现错误 0x80070716。
我在提出问题之前进行了搜索,并使用其他网站上的一些线程进行了验证,例如这个http://www.tek-tips.com/viewthread.cfm?qid=1085835 和另一个这里是http://forums.codeguru.com/printthread.php?t=366207。 但是那些线程并没有解决我的问题。
如果有人可以帮助我,请告诉我。
【问题讨论】:
对于对我的问题投反对票的机构,至少为其他成员解释一下,如果不是对我来说,这不鼓励在本网站进行合作 【参考方案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 文件的条目,即
每个 .rgs 文件必须在
IDR_MYRESOURCE REGISTRY "myresource.rgs"
要以文本模式打开您的 .rc 文件,请在解决方案资源管理器的上下文菜单中使用“查看代码”命令。
【讨论】:
以上是关于ATL COM DLL 寄存器错误 0x80070716的主要内容,如果未能解决你的问题,请参考以下文章
atl.dll已加载,但对dllregisterserver的调用失败,错误代码0x8002801c怎么办