MFC程序使用ado,在win7系统上生成的程序,在xp系统上,打开数据库失败,在关闭窗口时并且提示runtime运行错误。通过百度查找资料,找到以下解决方法:
http://blog.csdn.net/magic_andy/article/details/9225073 参考一
http://blog.csdn.net/jianzhanger/article/details/8970554 参考二
解决方案:
下载msado60_Backcompat_i386.tlb,将原来程序中的类似于下面的代码:
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")\
rename("LockTypeEnum","adoLockTypeEnum")\
rename("FieldAttributeEnum","adoFieldAtttributeEnum")\
rename("EditModeEnum","adoEditModeEnum")\
rename("RecordStatusEnum","adoRecordStatusEnum")\
rename("ParameterDirectionEnum","adoParameterDirectionEnum")\
rename("DataTypeEnum","adoDataTypeEnum")
替换成:
#import "msado60_Backcompat_i386.tlb" no_namespace rename("EOF","adoEOF")\
rename("LockTypeEnum","adoLockTypeEnum")\
rename("FieldAttributeEnum","adoFieldAtttributeEnum")\
rename("EditModeEnum","adoEditModeEnum")\
rename("RecordStatusEnum","adoRecordStatusEnum")\
rename("ParameterDirectionEnum","adoParameterDirectionEnum")\
rename("DataTypeEnum","adoDataTypeEnum")
重新编译成功即可!
我的程序解决方法:
1.参照方法一中的步骤,先下载(我的系统是64位win7)64位WIN7系统(INTEL平台):Msado60_Backcompat_i386.tlb 和Msado60_Backcompat_x64.tlb
将msado60_Backcompat_i386.tlb放入C:\Program Files (x86)\Common Files\System\ado\中,再将C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe复制到C:\Program Files (x86)\Common Files\System\ado\目录下并通过cmd注册,
运行CMD,
分别输入:
pushd C:\Program Files (x86)\Common Files\System\ado\回车
regtlibv12.exe msado60_Backcompat_i386.tlb回车
再将msado60_Backcompat_x64.tlb放入C:\Program Files\Common Files\System\ado,将regtlibv12.exe放入C:\Program Files\Common Files\System\ado中,再在cmd中进行注册
运行CMD,
分别输入:
pushd C:\Program Files\Common Files\System\ado\回车
regtlibv12.exe msado60_Backcompat_x64.tlb回车
2.将在stdAfx.h中引入msado.dll的代码如下:
//#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
我将引入代码改为:
#import "C:\Program Files (x86)\Common Files\System\ado\msado60_Backcompat_i386.tlb" no_namespace rename("EOF","adoEOF")\
rename("LockTypeEnum","adoLockTypeEnum")\
rename("FieldAttributeEnum","adoFieldAtttributeEnum")\
rename("EditModeEnum","adoEditModeEnum")\
rename("RecordStatusEnum","adoRecordStatusEnum")\
rename("ParameterDirectionEnum","adoParameterDirectionEnum")\
rename("DataTypeEnum","adoDataTypeEnum")
然后重新编译生成.exe文件即可。