VC+AE开发遇到的问题及其解决之道
来源:互联网 发布:vivo软件商店手机版 编辑:程序博客网 时间:2024/05/01 14:02
作者:朱金灿
来源:http://blog.sina.com.cn/explorer101
首先安装AE 9.3中Runtime和SDK for VC++,如下图所示:
AE本质上是一个COM库。使用COM库的一个常见问题是类型和系统的一个COM库重定义以及由于版本原因低版本的COM库不同组件之间的互相冲突。所以在AE开发时常会碰到以下编译错误:
错误 8 error C3121: 无法更改“IRow”类的GUID
错误 9 error C2011: “IRow”: “struct”类型重定义 e:\学习\c#\try again\try again\debug\esrigeodatabase.tlh 16693
错误 10 error C2011: “ICursor”: “struct”类型重定义 e:\学习\c#\try again\try again\debug\esrigeodatabase.tlh 16710
错误 11 error C2504: “IRow”: 未定义基类 e:\学习\c#\try again\try again\debug\esrigeodatabase.tlh 17997
错误 12 error C3121: 无法更改“ITableDefinition”类的 GUID
错误 13 error C2371: “UINT_PTR”: 重定义;不同的基类型 e:\学习\c#\try again\try again\debug\esricarto.tlh 1733
错误 14 error C2011: “ITableDefinition”: “struct”类型重定义 e:\学习\c#\try again\try again\debug\esricarto.tlh 9865
错误 15 error C2011: “esriControlsMousePointer
错误 16 error C2011: “esriControlsDragDropEffe
错误 17 error C2011: “esriControlsDropAction”: “enum”类型重定义 e:\学习\c#\try again\try again\debug\toolbarcontrol.tlh 153
错误 18 error C2011: “esriControlsAppearance”: “enum”类型重定义 e:\学习\c#\try again\try again\debug\toolbarcontrol.tlh 162
错误 19 error C2011: “esriControlsBorderStyle”: “enum”类型重定义 e:\学习\c#\try again\try again\debug\toolbarcontrol.tlh 169
IRow接口我估计是个ADO库的接口有冲突。解决这类错误的原则是:
如果和系统组件冲突的话就采用rename关键字进行重命名,如果是不同组件之间的接口冲突的话就用exclude关键字进行排除。
#pragma warning(push)
#pragma warning(disable: 4192)
#pragma warning(disable: 4146)
#import "D:\Program Files\ArcGIS\com\esriSystem.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE")
#import "D:\Program Files\ArcGIS\com\esriSystemUI.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,
#import "D:\Program Files\ArcGIS\bin\ToolbarControl.ocx" raw_interfaces_only raw_native_types no_namespace named_guids
#import "D:\Program Files\ArcGIS\bin\TOCControl.ocx" raw_interfaces_only, raw_native_types,no_namespace,named_guids,exclude("esriControlsMousePointer
#import "D:\Program Files\ArcGIS\com\esriGeometry.olb" raw_interfaces_only raw_native_types no_namespace named_guids
#import "D:\Program Files\ArcGIS\com\esriDisplay.olb" raw_interfaces_only raw_native_types no_namespace named_guids
#import "D:\Program Files\ArcGIS\com\esriGeoDatabase.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,rename("IRow", "esriIRow"), rename("ICursor", "esriICursor")
#import "D:\Program Files\ArcGIS\com\esri3DAnalyst.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE")
#import "D:\Program Files\ArcGIS\bin\SceneControl.ocx" raw_interfaces_only raw_native_types no_namespace named_guids
#import "D:\Program Files\ArcGIS\com\esriOutput.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE")
#import "D:\Program Files\ArcGIS\com\esriNetworkAnalysis.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE", "IStatusBar")
#import "D:\Program Files\ArcGIS\com\esriGeoAnalyst.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE", "IStatusBar")
#import "D:\Program Files\ArcGIS\com\esriCarto.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids, exclude("UINT_PTR"), rename("ITableDefinition", "esriITableDefinition")
#import "D:\Program Files\ArcGIS\com\esriSpatialAnalyst.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE", "IStatusBar")
#import "D:\Program Files\ArcGIS\com\esriDataSourcesFile.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")
#import "D:\Program Files\ArcGIS\com\esriDataSourcesGDB.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")
#import "D:\Program Files\ArcGIS\com\esriDataSourcesRaster.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")
#pragma warning(pop)
“Warning: This application has not been initialized with an ESRI license and will not function correctly. ”,如下图:
这时只需在BOOL C***App::InitInstance()函数加入下面代码:
参考文献:
This application has not been initialized with an ESRI license and will not function correctly
- VC+AE开发遇到的问题及其解决之道
- VC+AE开发遇到的问题及其解决之道
- AE开发时遇到的一些问题
- VC和matlab混合开发遇到的问题及其解决办法
- Android开发过程中遇到的问题及解决之道全纪录
- AE、PR视频制作遇到的问题
- AE开发 遇到未能加载文件或程序集的问题 FileNotFoundException
- AE开发的几个小问题
- 企业电子文档管理面临主要的问题及其解决之道
- AE+vc 开发之初始化
- opengl使用总结(包含遇到的问题以及解决之道)
- matlab重装时通常会遇到的问题及解决之道
- AE使用Cursor查询时遇到的问题0x8004020A
- 项目开发遇到的问题及其解决.总结
- Web开发中遇到的中文问题及其解决方案
- jedis开发过程中遇到的问题及其解决方法
- 常见Java开发过程中遇到的问题及其解决办法
- 学习Java Web开发中遇到的问题,及其解决方法
- 00021.Oracle建表(指定表空间、索引空间)
- [sig11]Advances in Real-Time Rendering in Games Introduction
- 暑假总结
- 00022.OracleUnion all 与union分析
- c# 操作符重载小结
- VC+AE开发遇到的问题及其解决之道
- 00023.Oracle数据导出、导入
- SPLAY
- zoj 1090 求三角形的外心(模板题)
- UDP 聊天室实现 经典错误
- Android 网络应用重点————调用WebService
- 00024.Oracle看所有参数
- great engineer in Javen eyes
- 雨果送送