编写DLL导出类时,类中用到ADO,出现类型重定义的问题解决及原因
2015-09-20 18:48
453 查看
写了一个dll导出类,编译该类的cpp文件时,出现如下问题:
错误列表:
1>------ 已启动生成: 项目: AdoAccess, 配置: Debug Win32 ------
1>正在编译...
1>StdAfx.cpp
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(187) : error C2011: “LockTypeEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(109) : 参见“LockTypeEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(233) : error C2011: “DataTypeEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(138) : 参见“DataTypeEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(278) : error C2011: “FieldAttributeEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(127) : 参见“FieldAttributeEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(296) : error C2011: “EditModeEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(83) : 参见“EditModeEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(305) : error C2011: “RecordStatusEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(341) : 参见“RecordStatusEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(502) : error C2011: “ParameterDirectionEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(326) : 参见“ParameterDirectionEnum”的声明
1>生成日志保存在“file://e:\资料-代码\AutoCAD 2000 ObjectARX开发实例-张帆\Chapter12\AdoAccess\Debug\BuildLog.htm”
1>AdoAccess - 6 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
原因分析:
1、在头文件stdafx.h中:
#import "E:\arx\msado15.dll" no_namespace rename ("EOF", "EndOfFile") rename("EOS", "EndOfStream")
2、在“stdafx.h ”文件中,
#ifndef _AFX_NO_DB_SUPPORT
#include // MFC ODBC 数据库类
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include // MFC DAO 数据库类
#endif // _AFX_NO_DAO_SUPPORT
1与2进行了相同的操作,所以会出现重定义的错误!!
解决方法:
1与2只能留一个!
将以下代码注释:
#ifndef _AFX_NO_DB_SUPPORT
#include // MFC ODBC 数据库类
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include // MFC DAO 数据库类
#endif // _AFX_NO_DAO_SUPPORT
写了一个dll导出类,编译该类的cpp文件时,出现如下问题:
错误列表:
1>------ 已启动生成: 项目: AdoAccess, 配置: Debug Win32 ------
1>正在编译...
1>StdAfx.cpp
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(187) : error C2011: “LockTypeEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(109) : 参见“LockTypeEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(233) : error C2011: “DataTypeEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(138) : 参见“DataTypeEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(278) : error C2011: “FieldAttributeEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(127) : 参见“FieldAttributeEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(296) : error C2011: “EditModeEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(83) : 参见“EditModeEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(305) : error C2011: “RecordStatusEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(341) : 参见“RecordStatusEnum”的声明
1>e:\资料-代码\autocad 2000 objectarx开发实例\chapter12\adoaccess\debug\msado15.tlh(502) : error C2011: “ParameterDirectionEnum”: “enum”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\dbdaoint.h(326) : 参见“ParameterDirectionEnum”的声明
1>生成日志保存在“file://e:\资料-代码\AutoCAD 2000 ObjectARX开发实例-张帆\Chapter12\AdoAccess\Debug\BuildLog.htm”
1>AdoAccess - 6 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
原因分析:
1、在头文件stdafx.h中:
#import "E:\arx\msado15.dll" no_namespace rename ("EOF", "EndOfFile") rename("EOS", "EndOfStream")
2、在“stdafx.h ”文件中,
#ifndef _AFX_NO_DB_SUPPORT
#include // MFC ODBC 数据库类
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include // MFC DAO 数据库类
#endif // _AFX_NO_DAO_SUPPORT
1与2进行了相同的操作,所以会出现重定义的错误!!
解决方法:
1与2只能留一个!
将以下代码注释:
#ifndef _AFX_NO_DB_SUPPORT
#include // MFC ODBC 数据库类
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include // MFC DAO 数据库类
#endif // _AFX_NO_DAO_SUPPORT
相关文章推荐
- Android中AIDL及其使用
- 因果图法
- 算法
- 数据库增删改查
- Automatic overvoltage protection
- Jmeter正则表达式提取器的使用方法(转)
- 如何在netbeans中插入图片背景
- 计算器开发
- UVa455——Periodic Strings
- POJ 1979 Red and Black
- multiprocessing module in python(转)
- jffs2制作与烧写
- 求浮点数是否相等
- ajax的总结( 一)
- oracle获取表和列的备注
- 一篇文章让Oracle程序猿学会MySql【未完待续】
- 怎么用XAMPP测试网站?
- 【ecmall】解决无法上传店铺logo和banner照片问题 (三)
- 数据库基础
- 使用SSH中Struts2找不到action,后台还没有报错