我的一个应用程序中引用了ADO对象,编译后在本机(简称电脑A)运行正常,但是在其他多台电脑上(统称电脑B)运行时出现“类不支持自动化或不支持期望的接口”错误,我已经在百度、谷歌了一大通,找到的答案无外乎是电脑A与电脑B的数据库版本与环境不同,通过在电脑A或者电脑B上更新MDAC什么的来解决,但我的问题奇怪之处在于:
1、电脑A与电脑B的ADO版本都是2.8,而且msado15.dll的版本都是2.81.3012.0;
2、电脑A与电脑B的系统都是WinXP SP3,都安装了VB6 SP6,在电脑A上编译后,在本机可以运行,到电脑B上运行出错;但是在电脑B上编译后,在电脑B与电脑A上运行都不会出错。所以我分析,我的问题应该与ADO版本没有什么关系,请朋友们帮我分析一下会是什么原因造成的,非常感谢!!!
1、电脑A与电脑B的ADO版本都是2.8,而且msado15.dll的版本都是2.81.3012.0;
2、电脑A与电脑B的系统都是WinXP SP3,都安装了VB6 SP6,在电脑A上编译后,在本机可以运行,到电脑B上运行出错;但是在电脑B上编译后,在电脑B与电脑A上运行都不会出错。所以我分析,我的问题应该与ADO版本没有什么关系,请朋友们帮我分析一下会是什么原因造成的,非常感谢!!!
XP的确是不同版本的GHOST版,但是这个应该不是主因。否则,在不同版本的GHOST版XP上就会出错,VB程序的通用性肯定不会这么差。
具体说一下:
VB这个玩意在生成exe后要有一系列dll才能确保正确运行,这就是VB程序必须打包才能运行的原因。这些dll来源不同(有的是MS系统的,也有MS的软件运行环境带的,还有第三方的包括字自己写的一些dll,而且在你使用电脑安装软件、打补丁的时候dll悄悄的升级)这就有问题了,dll冲突,也叫 DLL hell。具体表现:类不支持自动化或不支持期望的接口等错误。
具体解决方案:更新安装包中相应的dll为最新,或者打包时使用最新的系统运行环境。------------------------------------
以前经常被这个问题害得去现场,很气愤MS为什么不彻底解决,但是据说这个问题要等到Windows消失。
感谢回复!
我这个程序没有制作安装包,因为电脑A和电脑B都安装了VB6,所以我是在一台电脑上编译后,直接拿exe程序到另一台电脑运行的。而且ADO这个东西好像也不好打包。