vc6.0,vs2003中,ado代码移植到vs2005,2008时遇到重定义问题的解决办法

vc6.0,vs2003中,ado代码移植到vs2005,2008时遇到重定义问题的解决办法

vs2003中正常访问数据库的代码在vs2005或vs2008中编译报错如:



1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“wireHWND”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“_RemotableHandle”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“__MIDL_IWinTypes_0009”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“_COSERVERINFO”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“_COAUTHINFO”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“_COAUTHIDENTITY”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“IPersistFile”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“IPersist”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“IAuthenticate”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“IErrorInfo”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“IMarshal”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“IStream”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“ISequentialStream”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“_LARGE_INTEGER”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“_ULARGE_INTEGER”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“tagSTATSTG”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\stdafx.h( 69 ) : warning C4192: 导入类型库“_FILETIME”时自动排除“C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll”
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 251 ) : error C2011: “IBindResource”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 13883 ) : 参见“IBindResource”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 289 ) : error C2011: “ICreateRow”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 14271 ) : 参见“ICreateRow”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 329 ) : error C2011: “IRegisterProvider”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 14637 ) : 参见“IRegisterProvider”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 369 ) : error C2011: “tagDBPROPIDSET”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 2295 ) : 参见“tagDBPROPIDSET”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 400 ) : error C2011: “tagDBID”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 695 ) : 参见“tagDBID”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 411 ) : error C2011: “tagDBPROP”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 2394 ) : 参见“tagDBPROP”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 424 ) : error C2011: “tagDBPROPSET”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 2403 ) : 参见“tagDBPROPSET”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 435 ) : error C2011: “tagDBPROPINFO”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 2345 ) : 参见“tagDBPROPINFO”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 448 ) : error C2011: “tagDBPROPINFOSET”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 2356 ) : 参见“tagDBPROPINFOSET”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 457 ) : error C2011: “IDBProperties”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 7883 ) : 参见“IDBProperties”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tlh( 515 ) : error C2011: “IDBBinderProperties”: “ struct ”类型重定义
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 14390 ) : 参见“IDBBinderProperties”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 100 ) : error C2027: 使用了未定义类型“IBindResource”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 13883 ) : 参见“IBindResource”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 101 ) : error C3861: “raw_RemoteBind”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 102 ) : error C2673: “RemoteBind”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 102 ) : error C2673: “RemoteBind”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 110 ) : error C2027: 使用了未定义类型“ICreateRow”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 14271 ) : 参见“ICreateRow”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 111 ) : error C3861: “raw_RemoteCreateRow”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 112 ) : error C2673: “RemoteCreateRow”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 112 ) : error C2673: “RemoteCreateRow”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 120 ) : error C2027: 使用了未定义类型“IRegisterProvider”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 14637 ) : 参见“IRegisterProvider”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 121 ) : error C3861: “raw_RemoteGetURLMapping”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 122 ) : error C2673: “RemoteGetURLMapping”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 122 ) : error C2673: “RemoteGetURLMapping”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 126 ) : error C2027: 使用了未定义类型“IRegisterProvider”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 14637 ) : 参见“IRegisterProvider”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 127 ) : error C3861: “raw_SetURLMapping”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 128 ) : error C2673: “SetURLMapping”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 128 ) : error C2673: “SetURLMapping”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 132 ) : error C2027: 使用了未定义类型“IRegisterProvider”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 14637 ) : 参见“IRegisterProvider”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 133 ) : error C3861: “raw_UnregisterProvider”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 134 ) : error C2673: “UnregisterProvider”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 134 ) : error C2673: “UnregisterProvider”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 142 ) : error C2027: 使用了未定义类型“IDBProperties”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 7883 ) : 参见“IDBProperties”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 143 ) : error C3861: “raw_RemoteGetProperties”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 144 ) : error C2673: “RemoteGetProperties”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 144 ) : error C2673: “RemoteGetProperties”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 148 ) : error C2027: 使用了未定义类型“IDBProperties”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 7883 ) : 参见“IDBProperties”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 149 ) : error C3861: “raw_RemoteGetPropertyInfo”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 150 ) : error C2673: “RemoteGetPropertyInfo”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 150 ) : error C2673: “RemoteGetPropertyInfo”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 154 ) : error C2027: 使用了未定义类型“IDBProperties”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 7883 ) : 参见“IDBProperties”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 155 ) : error C3861: “raw_RemoteSetProperties”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 156 ) : error C2673: “RemoteSetProperties”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 156 ) : error C2673: “RemoteSetProperties”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 164 ) : error C2027: 使用了未定义类型“IDBBinderProperties”
1 >         d:\program files\microsoft visual studio  8 \vc\platformsdk\include\oledb.h( 14390 ) : 参见“IDBBinderProperties”的声明
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 165 ) : error C3861: “raw_Reset”: 找不到标识符
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 166 ) : error C2673: “Reset”: 全局函数没有“ this ”指针
1 > c:\users\elva\desktop\serialnumberwriter\trunk\debug\oledb32.tli( 166 ) : error C2673: “Reset”: 全局函数没有“ this ”指针


该错误由以下语句导致:
#define  _WIN32_DCOM 
#import 
" C:\\Program Files\\Common Files\\System\\ado\\msado15.dll "  no_namespace rename( " EOF " , " ADOEOF " )
#import 
" C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll "  no_namespace

解决办法是去掉no_namespace,在用到的地方单独加namespace

using namespace ADODB;
另一个不知道是什么,
我只好将他改名:
#import  " C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll "  rename_namespace( " OLEDB " //  no_namespace

你可能感兴趣的:(vc6.0,vs2003中,ado代码移植到vs2005,2008时遇到重定义问题的解决办法)