编写类的DLL时,类中用到ADO数据库,出现类型重定义的问题解决及原因!!

错误列表:

 >d:\test\autoloadmatrix\personadd\debug\msado15.tlh(228) : error C2011: “LockTypeEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(109) : 参见“LockTypeEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(276) : error C2011: “DataTypeEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(138) : 参见“DataTypeEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(321) : error C2011: “FieldAttributeEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(127) : 参见“FieldAttributeEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(343) : error C2011: “EditModeEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(83) : 参见“EditModeEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(352) : error C2011: “RecordStatusEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(341) : 参见“RecordStatusEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(616) : error C2011: “ParameterDirectionEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(326) : 参见“ParameterDirectionEnum”的声明
1>d:\program files\opencv2.0\vc2008\include\opencv\cvcompat.h(803) : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>d:\test\autoloadmatrix\personadd\add.cpp(131) : error C2065: “adLockReadOnly”: 未声明的标识符
1>d:\test\autoloadmatrix\personadd\add.cpp(191) : error C2065: “adLockOptimistic”: 未声明的标识符
1>d:\test\autoloadmatrix\personadd\add.cpp(244) : error C2065: “adLockOptimistic”: 未声明的标识符
1>d:\test\autoloadmatrix\personadd\add.cpp(289) : error C2065: “adLockOptimistic”: 未声明的标识符
1>d:\test\autoloadmatrix\personadd\add.cpp(499) : error C2065: “adLockReadOnly”: 未声明的标识符
1>d:\test\autoloadmatrix\personadd\add.cpp(710) : error C2065: “adLockOptimistic”: 未声明的标识符
1>d:\test\autoloadmatrix\personadd\add.cpp(728) : error C2065: “adLockOptimistic”: 未声明的标识符
1>PASSWD.cpp
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(228) : error C2011: “LockTypeEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(109) : 参见“LockTypeEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(276) : error C2011: “DataTypeEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(138) : 参见“DataTypeEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(321) : error C2011: “FieldAttributeEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(127) : 参见“FieldAttributeEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(343) : error C2011: “EditModeEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(83) : 参见“EditModeEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(352) : error C2011: “RecordStatusEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(341) : 参见“RecordStatusEnum”的声明
1>d:\test\autoloadmatrix\personadd\debug\msado15.tlh(616) : error C2011: “ParameterDirectionEnum”: “enum”类型重定义
1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(326) : 参见“ParameterDirectionEnum”的声明
1>d:\test\autoloadmatrix\personadd\passwd.cpp(120) : error C2065: “adLockOptimistic”: 未声明的标识符
1>Crypt.cpp
1>正在生成代码...
1>生成日志保存在“file://d:\test\AutoLoadMatrix\PersonAdd\Debug\BuildLog.htm”
1>PersonAdd - 20 个错误,1 个警告

 

原因分析:

    1、在头文件中:

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

    2、在“stdafx.h ”文件中,

#ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h>                      // MFC ODBC 数据库类
#endif // _AFX_NO_DB_SUPPORT

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

1与2进行了相同的操作,所以会出现重定义的错误!!

解决方法:

     1与2只能留一个!

     将以下代码注释:

#ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h>                      // MFC ODBC 数据库类
#endif // _AFX_NO_DB_SUPPORT

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

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值