MFC程序使用ado,在win7系统上生成的程序,在xp系统上,打开数据库失败


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文件即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值