dll 中使用ADO 出错的相关处理。
2012-02-06 13:29
363 查看
dll 中使用ADO 出错的相关处理。
error C2011: 'DataTypeEnum' : 'enum' type redefinition解决方法
2009-06-26 17:36
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")
另外一种如果要在DLL中使用前人写过的ADO类,上面的方法就不起效果了,最简单的方法就是注释掉STDAFX.H的几句代码
// #ifndef _AFX_NO_DAO_SUPPORT
// #include <afxdao.h> // MFC DAO database classes
// #endif // _AFX_NO_DAO_SUPPORT
error C2011: 'DataTypeEnum' : 'enum' type redefinition解决方法
2009-06-26 17:36
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")
另外一种如果要在DLL中使用前人写过的ADO类,上面的方法就不起效果了,最简单的方法就是注释掉STDAFX.H的几句代码
// #ifndef _AFX_NO_DAO_SUPPORT
// #include <afxdao.h> // MFC DAO database classes
// #endif // _AFX_NO_DAO_SUPPORT
相关文章推荐
- 难道这又是个未解之谜?--- 关于DLL中使用ADODATASET出错的问题
- android.support.v7使用,出错处理
- 使用VST机架效果进行人声处理的顺序及相关插件
- 在vc中的MFC regular dll中使用ado的导入问题
- 还原数据库时出错“无法处理数据库 ,因为它正由此会话使用”的解决方法
- 使用natapp发布个人网站(含出错处理方法)
- 在python中使用cx_Oracle模块出现“DLL Load failed”的处理方法
- ddtek.oracle.dll使用相关
- 未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。
- FSO组件不可用,各种与FSO相关的功能都将出错!请运行Install.asp或者到后台网站配置处设置好FSO组件名称。或无法使用vbscript
- java中使用Uploadify上传图片Firefox出错处理302
- 处理html页面元素工具类(HtmlAgilityPack.dll)的使用
- Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用
- 使用gulp相关插件进行api的跨域访问并监控文件的变化的简单处理
- 利用VC和ADO接口编写一个dll模块实现对数据库数据的处理
- T-SQL 存储过程中使用事务并回滚出错的SQL语句(C#事务处理)
- Mac下使用 you-get 来下载视频网站上的视频以及相关bug处理
- C++工程代码打包的dll在C#工程上使用注意点!变量对应关系与dll调用出错情况。
- 使用Grunt进行自动任务处理的相关教程
- eclipse使用MyBatisGenerator自动生成相关文件出错:project does not exist