前几天用vc6.0做了一个连接sql Server的程序,在我电脑上编译,生成了可执行文件,运行这个文件一切正常。当我把这个可执行文件拷贝到别人的电脑上,在有些电脑上可以正常运行,在有些电脑上出现CreateInstance失败的提示,并且无法连接数据库。我百思不得其解,用baidu搜了很长时间都没有发现导致CreateInstance失败的原因。哥着实郁闷了,后来我在出现CreateInstance失败的电脑上安装了VC6.0,重新对源代码全部重建,奇迹发生了,生成的可执行文件可以在该电脑上正常运行了。哥分析了一下原因,初步结论是,连接数据库的应用程序使用了 “c:\program files\common files\system\ado\msado15.dll ”这个文件,使用这个文件的代码为#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 。在编译的时候编译器会为msado15.dll生成两个文件msado15.tlh和msado15.tli。而生成的这两个文件估计和操作系统中的动态链接库msado15.dll有关,我怀疑在编译的时候,不同的操作系统生成的msado15.tlh和msado15.tli的内容是不同的,这样就直接导致了某一个操作系统下生成的连接数据库的可执行文件不能在一些其他的操作系统上正常运行。哥也是花了好长时间才发现这个现象的,为了其他遇到这个问题的人不再像我一样困惑,我把这个问题的解决方法写出来供大家参考。
VC 连接sql数据库, CreateInstance失败的原因
最新推荐文章于 2022-10-06 19:23:31 发布