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

pishuli 2015-09-30 09:05:54
我们的项目用到了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位之分,怎样实现所有操作系统版本都适用,求指点
...全文
3143 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_29093045 2015-12-17
  • 打赏
  • 举报
回复
在DLL工程里直接找到工程路径,#import 路径就可以。我和你的用法一样,只是在XP编译运行都没问题,在有的WIN 7 下还是连不上数据库
pishuli 2015-10-09
  • 打赏
  • 举报
回复
貌似还差最后一步,怎样调用我工程里的msado15.dll,而不调用系统C:\Program Files\common files\system\ado\msado15.dll,我使用msado15.dll的是一个dll工程,麻烦指点一下
pishuli 2015-10-08
  • 打赏
  • 举报
回复
引用 5 楼 maverick432 的回复:
我的方法是把xp的msado15.dll复制到工程目录,直接 #import "msado15.dll" no_namespace rename("EOF","adoEOF") ,这样win7 64位环境编译的程序在xp也能用了,我看了一下,xp的 msado15.dll好像是2.几版本,win7的是6.几,不知道都改动了什么,反正我只用最基本的,没发现有什么问题
按照你说的方法做了,用不了,把系统里的msado15.dll删了,没法访问数据库,是不是说明没有使用工程下的msado15.dll,我的#import XXX是在一个dll工程里
pishuli 2015-10-08
  • 打赏
  • 举报
回复
多谢各位的解答,我先试试看
shao99 2015-10-06
  • 打赏
  • 举报
回复
引用 5 楼 maverick432 的回复:
我的方法是把xp的msado15.dll复制到工程目录,直接 #import "msado15.dll" no_namespace rename("EOF","adoEOF") ,这样win7 64位环境编译的程序在xp也能用了,我看了一下,xp的 msado15.dll好像是2.几版本,win7的是6.几,不知道都改动了什么,反正我只用最基本的,没发现有什么问题
我也是这么解决的
worldy 2015-10-04
  • 打赏
  • 举报
回复
msado15.dll是一个COM组件,启动运行依赖于注册表,应该和装在哪个盘没有关系,主要是要正确的进行注册;msado15.dll是32位的,因此,你的最好使用32位进行编译你的程序,win8没有测试过,但xp win7 vista等版本,都能正确运行; msado15.dll 不是独立安装注册的,应该下载运行MDAC_TYP2.8
maverick432 2015-10-04
  • 打赏
  • 举报
回复
我的方法是把xp的msado15.dll复制到工程目录,直接 #import "msado15.dll" no_namespace rename("EOF","adoEOF") ,这样win7 64位环境编译的程序在xp也能用了,我看了一下,xp的 msado15.dll好像是2.几版本,win7的是6.几,不知道都改动了什么,反正我只用最基本的,没发现有什么问题
zyq5945 2015-10-01
  • 打赏
  • 举报
回复
使用XP的ADO低版本,在高版本大多能运行。反之则不行。
pishuli 2015-09-30
  • 打赏
  • 举报
回复
引用 楼主 pishuli 的回复:
我们的项目用到了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位之分,怎样实现所有操作系统版本都适用,求指点
多谢,不过貌似跟我问的不一样,我想知道有没有方法让我应用程序内的的msado15.dll满足各种操作系统
赵4老师 2015-09-30
  • 打赏
  • 举报
回复
在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
笨笨仔 2015-09-30
  • 打赏
  • 举报
回复
使用 宏 判断编译不同的版本,或使用菜单设置不同库,各种方法试试呗

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧