遇到的实际问题:
在MFC中,使用ADO来实现数据库操作时,经调试发现,在执行if(pConnection.CreateInstance(__uuidof(Connection)) != S_OK)时成功,即:
pConnection.CreateInstance(__uuidof(Connection))失败。
出错的环境:
研发机:win10
客户机:win7和xp
原因:
在头文件“stdafx.h”下,有一行
#import "C:Program Files/Common Files/System/ado/msado15.dll" rename("EOF","rsEOF")
即:使用“研发机(win10)”对应目录下的“msado15.dll”版本来编译程序,这才导致了“客户机(win7和xp)”不兼容的情况。
脑补时刻:通常,软件都是向下兼容的。
因此,关于当前msado15.dll的兼容问题,应当是这样的
①使用win10的msado15.dll来编译程序在win7和xp上当然会有问题。
②如果使用win7的msado15.dll来编译,在xp在运行仍会有问题,在win10上运行正常。
③如果使用xp的msado15.dll来编译,在win10和win7上运行都正常。
解决办法:降低到客户机可以兼容的msado15.dll版本
①打开“stdafx.h”,找到相应位置,并如图修改:
注释掉
#import "C:Program Files/Common Files/System/ado/msado15.dll" rename("EOF","rsEOF")
改成
#import "msado15.dll" rename("EOF","rsEOF")
②到“最低版本的客户机(本文是xp)”下,将
C:Program Files/Common Files/System/ado/msado15.dll
拷贝到“研发机”的项目工程目录下,重新编译即可。