当前位置: 代码迷 >> VC/MFC >> msado15.dll兼容性有关问题,怎样实现msado15.dll适用不同版本
  详细解决方案

msado15.dll兼容性有关问题,怎样实现msado15.dll适用不同版本

热度:148   发布时间:2016-05-02 03:37:27.0
msado15.dll兼容性问题,怎样实现msado15.dll适用不同版本
我们的项目用到了msado15.dll,到了客户手上经常有数据库没法访问的问题,看了一下基本上都是msado15.dll的问题,
目前我们的msado15.dll直接使用
#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 

看网上说这样做如果系统装在其他盘就不能访问了,打包在exe同在一个文件夹下,这样的话如何应对不同的操作系统win7,win8,winxp还有64位和32位之分,怎样实现所有操作系统版本都适用,求指点

------解决思路----------------------
在64位Windows下:
64位exe和dll在目录c:\windows\system32目录下;
32位exe和dll在目录c:\windows\syswow64目录下;
所以要注意:
    在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
    且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
    在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
    在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe

------解决思路----------------------
使用 宏 判断编译不同的版本,或使用菜单设置不同库,各种方法试试呗
------解决思路----------------------
使用XP的ADO低版本,在高版本大多能运行。反之则不行。
------解决思路----------------------
我的方法是把xp的msado15.dll复制到工程目录,直接 #import?"msado15.dll"?no_namespace?rename("EOF","adoEOF")?,这样win7 64位环境编译的程序在xp也能用了,我看了一下,xp的 msado15.dll好像是2.几版本,win7的是6.几,不知道都改动了什么,反正我只用最基本的,没发现有什么问题
------解决思路----------------------
msado15.dll是一个COM组件,启动运行依赖于注册表,应该和装在哪个盘没有关系,主要是要正确的进行注册;msado15.dll是32位的,因此,你的最好使用32位进行编译你的程序,win8没有测试过,但xp win7 vista等版本,都能正确运行;

msado15.dll 不是独立安装注册的,应该下载运行MDAC_TYP2.8
------解决思路----------------------
引用:
我的方法是把xp的msado15.dll复制到工程目录,直接 #import?"msado15.dll"?no_namespace?rename("EOF","adoEOF")?,这样win7 64位环境编译的程序在xp也能用了,我看了一下,xp的 msado15.dll好像是2.几版本,win7的是6.几,不知道都改动了什么,反正我只用最基本的,没发现有什么问题


我也是这么解决的