regsvr32 COM组件注册失败

这里针对COM组件注册失败出现过的问题进行总结。均为个人经验之谈。

提示“找不到指定的模块”,HRESULT:0X8007007E

考虑生成的DLL是不是缺了其他依赖的DLL,建议使用dumpbin.exe去看看你生成的DLL依赖了什么别的DLL。

以及用Everything去搜寻对应的DLL是否存在。

在exe执行的时候,DLL的遍历一般是从根目录下开始,找不到DLL则到C盘的system32上去找,用everything去看有没有对应的DLL,如果有,就不是缺这个。然后缺什么就补什么。

如果这种情况下,还是没解决问题,去下载一个Process Monitor,地址:Process Monitor - Sysinternals | Microsoft Learn


 

用筛选(Filter)指定Process Name为regsvr32.exe,然后Add之后Apply

点击Clear清空窗口后,点击Capture捕获,然后执行命令行regsvr32你所需要的DLL。

然后这会,ProcessMonitor已经显示出一片regsvr32.exe执行后的结果。这个时候把Capture关掉!!去找FILE NOT FOUND和PATH NOT FOUND,看里面的详情。就指定缺什么DLL,一般来说是缺的是你import的依赖库的DLL,把它补充到你的编译目录即可。否则看情况,是不是缺什么VC SDK等等。

看ProcessMonitor会比较费劲,但是最好仔细一点看,一般缺的DLL会有一片连续的FILE NOT FOUND和PATH NOT FOUND。

提示“找不到对应的程序”,同样提示HRESULT问题,触发断点的

这种情况下,和上面类似,应该就是缺系统DLL。最好把这个无法注册的COM对应的系统DLL都复制粘贴到这里。再试试。

最后还要检查一下:在注册表编辑器里,去搜索你要注册的这个DLL,看看路径参数什么的是否对应上,如果对应上了,则这个DLL的依赖项是完备了。problem solved

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值