A set of ADO classes - version 2.20 编译手记

原文地址:http://hi.baidu.com/barendx87/blog/item/4ba0d0a4cdf7391f4b36d6e8.html


http://www.codeproject.com/KB/database/caaadoclass1.aspx


在VS2008项目下编译会出现大量错误

错误1:

ado2.h(45) : fatal error C1083: 无法打开类型库文件:“msado15.dll”: No such file or directory

解决方法:

//#import rename("EOF", "EndOfFile")
//#import no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum")

#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF", "EndOfFile")
#import "C:\Program Files\Common Files\System\ado\MSJRO.DLL" no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum")




错误2:


ado2.cpp(312) : error C2668: “pow”: 对重载函数的调用不明确

解决方法:

val /= pow(10, vtFld.decVal.scale);

val /= pow(10, (double)vtFld.decVal.scale);



错误3:

oledb2.h(38) : fatal error C1083: 无法打开类型库文件:“oledb32.dll”: No such file or directory

解决方法:

#import "C:\Program Files\Common Files\System\ole db\oledb32.dll" no_namespace
//#import no_namespace



错误4:

oledb32.tlh(251) : error C2011: “IBindResource”: “struct”类型重定义

oledb32.tlh(289) : error C2011: “ICreateRow”: “struct”类型重定义

oledb32.tlh(329) : error C2011: “IRegisterProvider”: “struct”类型重定义

......

......

解决方法:

#import "C:\Program Files\Common Files\System\ole db\oledb32.dll" no_namespace

去掉红色部分



错误5:

oledb2.h(52) : error C2146: 语法错误 : 缺少“;”(在标识符“m_pDataLink”的前面)

oledb2.h(52) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

oledb2.h(52) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

oledb2.cpp(31) : error C2065: “m_pDataLink”: 未声明的标识符

oledb2.cpp(42) : error C2228: “.CreateInstance”的左边必须有类/结构/联合

......

......

解决方法:

手工加入命名空间名称,打开“oledb32.tlh”查找“namespace”关键字,内容为:

namespace MSDASC {

......

......

......

} // namespace MSDASC

红色部分自己手工加入

#import "C:\Program Files\Common Files\System\ole db\oledb32.dll" //no_namespace
using namespace MSDASC;



另外还有“#include "stdafx.h"“错误,这个自己决定是否加入或者去除,具体可在项目属性里设置

至此所有问题解决,编译通过 。。。。。。

你可能感兴趣的:(A set of ADO classes - version 2.20 编译手记)