ActiveX注册报错,错误代码0X80040200

hahafyf 2020-09-01 04:29:27
网上查了,大多数都是说没有以管理员权限注册的问题,但是同样的代码,只修改odl文件的最开始的uuid,以及相应的cpp文件的对应的uudi,编译后就注册不了,改回来再编译就又能注册成功,搞不清是哪里的问题。项目是VC6改成VS2015的。重新用VS2015新建个工程,然后添加lib文件,再编译,也出现同样的注册报错问题,错误代码也一样,求高手指点下,谢谢了
...全文
708 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
顾小白xx 2021-03-11
  • 打赏
  • 举报
回复
注册的时候要把调用的DLL和其他有关系的模块放到一起才可以,还有就是要有使用管理员权限
hahafyf 2020-09-16
  • 打赏
  • 举报
回复
多谢多谢,后来我是新建的工程,这些ID都是自动生成的,除了调用的com组件的IDL里面的uuid是以前的文件,现在发现如果工程中加入了IDL,和别的lib文件,就算是不调用其中的方法,编译后就会出现这样的问题,如果不加入这些文件,比如:lib在项目属性页-》链接器-》输入里填了,不用加入到工程中,就不会出现这样的问题。不知道什么原因。
蒋晟 2020-09-16
  • 打赏
  • 举报
回复
133行是 // Check that the guid of the loaded type library matches // the tlid parameter. ASSERT(IsEqualGUID(tlid, tlidActual)) 明显资源文件跟源代码用了不同的ID……你要改UUID得在所有文件里都查找替换啊,不要只改一部分。
hahafyf 2020-09-15
  • 打赏
  • 举报
回复
ActiveX 工程中并没有rgs文件啊,只有调用的com组件的工程中有rgs哦,另外debug编译到最后,应该是注册的时候,提示下图这样:
an_bachelor 2020-09-14
  • 打赏
  • 举报
回复
只添加idl文件 .rgs文件中不会添加对应的注册表修改脚本 也就不会注册这些
其实最保守的办法可以在vs2015中新建同类工程 然后右键在代码树上点 一个个接口照着新建一遍 整个工程替换新生成的接口、组件的uuid 这样可确保在.rgs中也有相应的脚本
注册是需要用管理员的 你可以跑vs的时候就右键-》管理员运行 这样编译中会自动以管理员权限去跑regsvr32
hahafyf 2020-09-14
  • 打赏
  • 举报
回复
大神还在吗?我现在新建了工程,在加入其它IDL文件的时候编译可以过,但是注册的时候也报同样的错误,只是在工程里添加了这个IDL文件,其它都没做,不知道问题在哪里,先谢了
an_bachelor 2020-09-02
  • 打赏
  • 举报
回复
是不是工程中还有其他地方使用了这个uuid呢?比如.rgs文件?要改某个id最好整个工程中替换。 另外,你为什么要改组件或接口的ID呢?按照COM的设计哲学,这些UUID在任何情况下不应该改变, 如果需要新的版本,你就应该用一个新的ID,如果你需要复用代码,应该用包容或聚合的方式,而不是直接去修改原有组件的行为,与之交互的代码(不论是Client还是Server)默认都会认为你的同一ID的接口不会有不同的行为,所以你这么修改很可能埋雷。。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧