一. 问题:
最近项目中需要做一个activex控件嵌入到浏览器中使用。
1、很快用 VS2013+Qt5.6.1 新建了一个 ActiveQt Server 工程,并简单写了一个弹框的测试功能,编译,注册,测试,一切OK。
2、将项目移植到 ActiveQt Server 工程中后,编译,注册,调试,也一切OK。
3、可待打包到别的机器发布安装的时候,报注册失败,经过一番简单的排查后,确定是release版本的就是注册不了(之前测试的时候用的事debug版本的)。
注册命令如下:

regsvr32.exe *.dll

为什么 release 版本的 activex 注册失败呢?而debug版本的却能注册成功?

二. 问题排查:
接下来进入了一轮长达几天的问题排查过程。
1、期间搜索帖子无数,问过N个群友,也问过同行和之前的同事。
有的说是代码问题,有的说是工程配置问题,有的说是动态库不兼容,有的说。。。。。
2、因为对VS不熟,也将工程移植到QtCreator,可表现还是一样: release 版本的 activex 注册失败,而debug版本的却能注册成功。
感觉排除了工程配置的原因。
3、又把之前那个简单的例子拿出来看了看,表现依然一样:release 版本的 activex 注册失败,而debug版本的却能注册成功。
感觉排除了动态库不兼容的原因。
4、于是进入了又一轮无目的的思考过程。

三. 问题解决:
最后在两个同事的启发下找到了问题:
1、怀疑会不会是权限问题? release 版本需要更高的权限?
于是我以管理员方式打开cmd,执行注册命令,还是失败。
2、突然抱找无所谓的态度,把注册动态库的命令后面动态库文件使用了全绝对路径,居然成功了!
3、再一次把批处理里的动态库文件也改成带着全绝对路径,也成功了!

四. 结论:
原来问题的原因是:
release 版本的 activex 注册时,控件动态库文件需要带着全绝对路径;而debug版本的却只要在当前目录就行,当然带上全觉得路径也是可以的。
注册命令如下:

regsvr32.exe "%~dp0*.dll"

添加双引号的原因是保证路径含有空格时能那个正常注册成功。

当然,activex控件注册失败的原因很多,你遇到的问题可能不是上面的原因,但如果也遇到 “release 版本的 activex 注册失败,而debug版本的却能注册成功。”,不妨也试一试这个方法。

为什么release版本的activex 注册失败?而debug版本的却能注册成功?相关推荐

  1. SHAR1,获取不同,release版本SHAR1,debug版本SHAR1,导致定位失败,经纬度获取为0

    问题: 1,获取的shar1不同 2,直接运行到手机上没有服务,比如定位失败,导航失败:打包后是有服务的,有时候,直接运行上去又服务,打包后没有服务了,APP要上线了,出这样的问题,毫无头绪,好着急, ...

  2. hadoop 3.0+ 版本安装访问50070失败处理方法

    hadoop 3.0+ 版本安装访问50070失败处理方法 安装hadoop 3.0+ 安装成功后访问http://localhost:50070/访问失败,或者http://localhost:90 ...

  3. android studio release包安装后打不开,debug包安装正常怎么解决

    很多朋友都是团队进行开发的,所以免不了代码需要提交,并且要打包给测试,以及发布版本. 而做过开发的都知道,打包版本一般分为debug版本,release版本,其中release版本体积比较小,是可以发 ...

  4. UWP DEP0700: 应用程序注册失败。[0x80073CF9] 另一个用户已安装此应用的未打包版本。当前用户无法将该版本替换为打包版本。...

    原文:UWP DEP0700: 应用程序注册失败.[0x80073CF9] 另一个用户已安装此应用的未打包版本.当前用户无法将该版本替换为打包版本. 最近电脑抽风,我在[应用程序和功能]中重置了以下我 ...

  5. COM组件(ActiveX)控件注册失败

    2019独角兽企业重金招聘Python工程师标准>>> 这主要是由于旧版本的falsh player的原因,卸载干净并清理注册表,再次安装flash player即可. 具体方法: ...

  6. 关于ATL生成COM注册失败解决方法

    最近搞C++封装研究了下COM 做最后整理打包的时候发现各种问题引发的注册失败,so整理下备忘. 1.因引用其它动态连接库与你注册的dll不在同一目录下引起的异常.(解决方法将依赖dll放置与注册dl ...

  7. VC++调试程序、快捷键以及Debug版本与Release版本

    1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态.C/C++标签中的Category选General, ...

  8. 解决IDL检索COM类工厂中CLSID为{ }组件注册失败

    作者用的envi版本为5.3 在第一次利用C#对IDL进行二次开发出现组件注册失败 解决方法: 亲测有效 以管理员的身份运行命令提示符 然后在文本框内输入即可解决 C:\Windows\System3 ...

  9. 如何应对VB中对象库注册失败(MSCOMCTL.OCX)

          今天在打开自己所敲得学生管理系统时,突然之间出现了对象库注册失败,原本上午还可以用,但是下午怎么就打不开了,为什么突然会这样我也不知道原因,但是解决的办法找到了几个,不知道在用VB的其他人 ...

最新文章

  1. spring 声明式事务
  2. 《Arduino开发实战指南:LabVIEW卷》——3.2 LabVIEW的数据流编程方法
  3. C语言DP备忘计算指数N的斐波那契级数的算法(附完整源码)
  4. PCB工程师的7个好习惯
  5. android build.time,Android SDK中的恒定Build.TIME
  6. XP去除开机登陆画面
  7. 扇贝有道180922每日一句
  8. 社交巨人屏蔽Google搜索 Facebook发展强劲拟上市
  9. 微博图片设计模板素材推荐 精品 小众
  10. Android如何实现超级棒的沉浸式体验
  11. Chtholly Nota Seniorious
  12. 2019年安徽省模块七满分多少_2019年安徽中考总分是多少 考试科目及分值
  13. python-批量修改图片名称(按序号排序)
  14. Numpy下arr[2],arr[2,:],arr[2:,:]的区别
  15. 机器学习(一)机器学习概述
  16. 如何用电脑录制一个解说视频
  17. 一种效果很好的自动白平衡技术(WhiteBalance)
  18. DevExpress 设置DateEdit显示年月
  19. 计算机毕设 数据可视化分析大屏系统分享
  20. vue中使用echarts绘制中国地图

热门文章

  1. PageRank、图计算、图存储的两种方式
  2. 08-18 三十分钟的反弹
  3. 在北京买房子-搞笑版(转)
  4. 智能主体需要什么样的学习系统?互补学习理论更新
  5. linux 查看go安装目录,终于找全了!Go的三种常见的安装方式,各种系统多个版本应有尽有...
  6. 交警在认定责任时能调取监控吗
  7. 顺德IT男自制“茶几平板电脑”
  8. i5 10400f配什么主板
  9. 微宝球型机器人功能_腾讯微宝球型机器人亮相 能游戏可无线充电
  10. 【Python入门教程】第30篇 列表sort()方法