• VC ADO “ParameterDirectionEnum”:“enum” 类型等 重定义问题 解决方案


    1>------ 已启动生成: 项目: iotser, 配置: Debug Win32 ------
    1>正在编译...
    1>iotser.cpp
    1>f:\c++ pro\iocptser\debug\msado15.tlh(228) : error C2011: “LockTypeEnum”: “enum”类型重定义
    1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(109) : 参见“LockTypeEnum”的声明
    1>f:\c++ pro\iocptser\debug\msado15.tlh(276) : error C2011: “DataTypeEnum”: “enum”类型重定义
    1>        c:\program files\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:\program files\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:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(83) : 参见“EditModeEnum”的声明
    1>f:\c++ pro\iocptser\debug\msado15.tlh(352) : error C2011: “RecordStatusEnum”: “enum”类型重定义
    1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(341) : 参见“RecordStatusEnum”的声明
    1>f:\c++ pro\iocptser\debug\msado15.tlh(616) : error C2011: “ParameterDirectionEnum”: “enum”类型重定义
    1>        c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(326) : 参见“ParameterDirectionEnum”的声明
    1>f:\c++ pro\iocptser\iocptser.cpp(18) : error C2871: “ADODB”: 具有该名称的命名空间不存在
    1>生成日志保存在“file://f:\C++ pro\iocptser\Debug\BuildLog.htm”
    1>iocptser - 7 个错误,0 个警告
    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========


    后来经过在csdn上的搜索发现有下面两种办法来解决这个问题

    1)

    #pragma warning(disable:4146)
    #import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
    #pragma warning(default:4146)
    using namespace ADODB;

    2)

    #pragma warning(disable:4146)
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" \
    no_namespace \
    rename("EOF","adoEOF") rename("DataTypeEnum","adoDataTypeEnum") \
    rename("FieldAttributeEnum", "adoFielAttributeEnum") rename("EditModeEnum", "adoEditModeEnum") \
    rename("LockTypeEnum", "adoLockTypeEnum") rename("RecordStatusEnum", "adoRecordStatusEnum") \
    rename("ParameterDirectionEnum", "adoParameterDirectionEnum")

    错误列表:

     >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

     

    转载:http://blog.csdn.net/p40614021/article/details/7046728

  • 相关阅读:
    automaticallyAdjustsScrollViewInsets
    Quartz 2D绘图
    手势识别
    多视图控制器跳转方法
    NSString和NSDate的转换
    遍历子视图中某个类型控件方法
    发布程序后的NSLog批处理
    searchDisplayController用法
    UIImagePickerController使用方法
    沙盒目录常用获取方式
  • 原文地址:https://www.cnblogs.com/LessNull/p/2658087.html
Copyright © 2020-2023  润新知