“locktype”enum type 类型重定义问题的解决

手册/FAQ (339) 2016-04-20 14:34:01

使用ado来连接数据库,结果出现这样一些编译错误:

1>f:\c++pro\iocptser\debug\msado15.tlh(228) : error C2011: “LockTypeEnum”: “enum”类型重定义

1> c:\program files\microsoftsdks\windows\v6.0a\include\dbdaoint.h(109): 参见“LockTypeEnum”的声明

1>f:\c++pro\iocptser\debug\msado15.tlh(276) : error C2011: “DataTypeEnum”: “enum”类型重定义

1> c:\programfiles\microsoft sdks\windows\v6.0a\include\dbdaoint.h(138): 参见“DataTypeEnum”的声明

1>f:\c++pro\iocptser\debug\msado15.tlh(321) : error C2011: “FieldAttributeEnum”:“enum”类型重定义

1> c:\programfiles\microsoft sdks\windows\v6.0a\include\dbdaoint.h(127): 参见“FieldAttributeEnum”的声明

1>f:\c++pro\iocptser\debug\msado15.tlh(343) : error C2011: “EditModeEnum”: “enum”类型重定义

1> c:\programfiles\microsoft sdks\windows\v6.0a\include\dbdaoint.h(83): 参见“EditModeEnum”的声明

1>f:\c++pro\iocptser\debug\msado15.tlh(352) : error C2011: “RecordStatusEnum”: “enum”类型重定义

看样子它是跟WindowsSDK的某些头文件定义的类型冲突了,从dbdaoint.h我大致猜出它是跟dao库冲突了。我想既然我不用dao连接数据,就把它头文件注释掉好了,于是把stdafx.h下面的dao头文件相关代码注释掉:

  • #ifndef _AFX_NO_DAO_SUPPORT  
  • #include <afxdao.h>                     // MFC DAO 数据库类  
  • #endif // _AFX_NO_DAO_SUPPORT  

重新编译就没有这些编译错误了。

THE END