VS2013 WIN7 ADO开发 exe到XP下就初始化失败

时间:2021-12-05 17:28:23
BOOL CToolManagementApp::InitADO()
{
CoInitialize(NULL);
HRESULT hrpC, hrpR;
hrpC = m_pConnection.CreateInstance(__uuidof(Connection));
hrpR = m_pRst.CreateInstance(__uuidof(Recordset));
if (SUCCEEDED(hrpC) && SUCCEEDED(hrpR))
return TRUE;
return FALSE;
}


1、如上代码在WIN7 VS2013开发生成exe,在WIN7系统上return TRUE;,但把exe COPY到XP系统上就return FALSE;
2、相关代码在在XP VC6上也生成没有问题

http://bbs.csdn.net/topics/390639155?page=1  这个参照过修改过了没用

6 个解决方案

#1


大神们帮忙分析分析啊

#2


WIN7的ADO版本比XP的高,在高版本生成的程序在低版本不兼容,需要反过来,在XP编译,在WIN7和XP都可以运行。

#3


引用 2 楼 zyq5945 的回复:
WIN7的ADO版本比XP的高,在高版本生成的程序在低版本不兼容,需要反过来,在XP编译,在WIN7和XP都可以运行。


关键是在XP下装不了VS2013

#4


试试下载一个低版本的msado15.dll(比如这个 http://pan.baidu.com/s/1mhMGpCW),放在项目文件中,然后用相对路径import 
#import "msado15.dll" no_namespace rename("EOF","adoEOF")
在win7中编译,然后再试试拷到XP里,应该就行了。

#5


在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
    在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

#6


感谢各位
拷贝XP系统底下的msado15.dll和msadox.dll到工程ADO目录下重新编译后OK
#import "./ADO/msadox.dll"
#import "./ADO/msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")

#1


大神们帮忙分析分析啊

#2


WIN7的ADO版本比XP的高,在高版本生成的程序在低版本不兼容,需要反过来,在XP编译,在WIN7和XP都可以运行。

#3


引用 2 楼 zyq5945 的回复:
WIN7的ADO版本比XP的高,在高版本生成的程序在低版本不兼容,需要反过来,在XP编译,在WIN7和XP都可以运行。


关键是在XP下装不了VS2013

#4


试试下载一个低版本的msado15.dll(比如这个 http://pan.baidu.com/s/1mhMGpCW),放在项目文件中,然后用相对路径import 
#import "msado15.dll" no_namespace rename("EOF","adoEOF")
在win7中编译,然后再试试拷到XP里,应该就行了。

#5


在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
    在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

#6


感谢各位
拷贝XP系统底下的msado15.dll和msadox.dll到工程ADO目录下重新编译后OK
#import "./ADO/msadox.dll"
#import "./ADO/msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")