VB6项目,更新了一些内容,生成了新版的exe文件,放到设备上运行,提示
“运行时错误 374:激活控件‘VB.UserControl’失败。这个控件可能与您的应用程序不兼容。确定您使用的这个版本的控件是由您的应用程序所提供的。”
进行了多种尝试,仍未解决问题,不过发现了规律:
设备上的控制电脑装的是系统是XP,较早版本的exe可以在设备上运行,而我接手之后重新生成的exe无法运行。
该项目是从前同事H手中接过来的,当时他的电脑系统是XP,而当前开发电脑是Win7,于是进行了比对,得出结论:
在XP中生成的exe没问题;
在Win7中生成的exe报错;
原因找到了,不过还是没有解决办法。
根据错误提示的具体内容:UserControl, 结合之前网上查资料的结果,判断很可能是用户自定义控件的ocx文件版本问题,也就是说:
目标电脑上已经安装的软件目录中,放着早期在XP系统开发时生成的ocx文件,与之匹配的是XP系统中生成的exe文件,后来我接手项目之后,在Win7系统中开发,生成了新的exe文件,这个exe文件放进目标电脑之后,与原有的ocx不匹配了。
思路出来了,就是要在Win7系统中把ocx文件重新生成一遍,和新的exe文件匹配起来。
找到用户自定义控件的项目(这个自定义控件叫AButton,是一个自定义样式的按钮):
1. 打开.vbp文件
2. 选中项目名称
3. 文件-> 生成Abutton.ocx
生成新的ocx文件之后,再回到主项目中,把exe也重新生成一遍,再把ocx和exe一起更新到目标电脑上,问题解决。
总结一下,本例的问题是由开发环境的操作系统改变而引起,在新的操作系统中重新生成ocx文件即可。