为了使用c++开发程序,必须导入ArcEngine的库,需要直接导入的库在C:/Program Files/ArcGIS/com,路经下面。库文件的后缀名是olb。导入的方式是在stdafx.h头文件中在最下面加入一下语句:
#pragma warning(push)
#pragma warning(disable : 4192) /* Ignore warnings for types that are duplicated in win32 header files */
#pragma warning(disable : 4146) /* Ignore warnings for use of minus on unsigned types */
#import "C:/Program Files/ArcGIS/com/esriSystem.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids, exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE")
#import "C:/Program Files/ArcGIS/com/esriSystemUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR","ICommand","IProgressDialog")
#import "C:/Program Files/ArcGIS/com/esriGeometry.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR")
#import "C:/Program Files/ArcGIS/com/esriDisplay.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR")
#import "C:/Program Files/ArcGIS/com/esriOutput.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR")
#import "C:/Program Files/ArcGIS/com/esriGeoDatabase.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR","IRow","ICursor")
#import "C:/Program Files/ArcGIS/com/esriCarto.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR","ITableDefinition","UINT_PTR")
// additionally for 3D controls
#import "C:/Program Files/ArcGIS/com/esri3DAnalyst.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "C:/Program Files/ArcGIS/com/esriGlobeCore.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "C:/Program Files/ArcGIS/bin/SceneControl.ocx" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "C:/Program Files/ArcGIS/bin/GlobeControl.ocx" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#pragma warning(pop)
需要注意的是导入后,由于接口冲突,直接编译容易出现错误,如某某接口重定义,一般来说到导入库的顺序是有规则的,如果顺序不对也会在编译时出错。
导入库时如果出现问题,一般可以采用以下方法来处理。
1.如果报的错误是接口重定义错误那么需要在导入语句后面加入exclude(“冲突接口”)
2.如果报的错误是接口重定义,如果按照方法一种的修改仍然不能解决,需要重新命名接口,例如,报ISegment接口重定义,那么直接在导入语句的最后加上rename(“ISegment”, “IESRISegment”),这时的接口IESRISegment就是对ISegment的重命名。
3.如果接口报的错误很多,而错误的形式都是没有定义该接口,这样的错误是没有导入需要的库,可以在ArcEngine中的帮助中找到该接口所属的组件库,然后导入。其次,如果库的导入顺序不对那么也很容易出现以上问题。
4.在stdafx.h头文件中必须要注意,导入库语句的位置,最好是放在最后,要不然也会出现很多错误。
以上的这个问题在vs2003中同样遇到过,只是在vs2005中,这个问题出现的频率更高。
分享到:
相关推荐
在使用VC++开发ArcEngine应用程序时,首先需要对两者的基础知识有一定的了解。 1. **ArcEngine概述**: ArcEngine是一个COM(Component Object Model)组件,包含了用于构建GIS应用程序的各种接口和类。它支持多种...
在IT行业中,`vc+ArcEngine`是一种使用Visual C++(简称VC)编程语言与Esri公司的ArcGIS平台中的ArcEngine组件进行集成开发的技术。ArcEngine是一个强大的地理信息系统(GIS)开发接口,允许开发者创建定制的GIS应用...
### VC6.0+Arcengine9.0 开发应用程序框架制作 #### 一、概述 在探讨如何使用 VC6.0 和 Arcengine9.0 开发应用程序框架之前,我们需要了解两个核心工具的基本概念: 1. **Visual C++ 6.0 (VC6.0)**:这是一款由...
《ArcEngine10与VC#结合的应用开发》 在地理信息系统(GIS)的开发领域,ArcEngine是一款由Esri公司推出的强大开发平台,它允许开发者利用C#等编程语言进行地图绘制、空间分析以及地理数据管理等二次开发。本文将...
#import指令是VC中的一种编译环境语句,它允许开发者将COM组件导入到C++程序中,以便于使用COM接口。下面是对#import指令的详细分析。 一、基本语法 #import指令的基本语法如下: ``` #import "filename" ...
"基于VC#和AE(ARCENGINE)开发的综合地理信息系统"是一个利用这两种技术构建的高效解决方案,旨在提供全面的地理信息处理功能。让我们深入探讨这个系统的关键知识点。 首先,VC#(Visual C#)是微软公司开发的一种...
《ArcEngine二次开发教程》是一本专注于地理信息系统(GIS)技术的专著,主要探讨了如何利用ArcEngine进行软件开发,结合VB、C#和VC等编程语言进行深入实践。ArcEngine是Esri公司提供的一个强大的GIS开发平台,它...
根据给定的信息,我们可以深入探讨以下几个关键的知识点:ArcEngine 的使用、Visual C++ (VC) 开发环境下的 ArcEngine 应用、反距离权重插值(Inverse Distance Weighting, IDW)方法以及如何实现一个具体的 IDW ...
### ArcEngine 开发环境搭建与基础应用:使用VC++.NET 2005 打开 ArcMap 地图文档 #### 一、ArcEngine开发环境与版本问题 **ArcEngine9.X 版本问题** - **ESRI 发布的 ArcEngine 版本**:根据 ESRI 官方文档,不同...
首先,ArcEngine是Esri公司提供的一款强大的GIS开发组件,它可以支持多种编程语言,包括VC++。通过ArcEngine,开发者可以构建桌面、Web以及移动应用程序,实现地图显示、空间数据处理和分析等功能。 缓冲区分析的...
本篇文章将详细探讨“自制VC导入库导入名计算方式修改工具”的工作原理、问题背景以及如何解决通过DEF文件制作的导入库无法导入不带@nn后缀的stdcall函数的问题。 首先,我们需要理解什么是DLL和LIB。DLL是一种可...
### 使用VC++开发基于ArcEngine的3维管线距离分析组件 #### 摘要与背景 随着计算机技术的快速发展,特别是地理信息系统(GIS)技术的进步,对于城市和乡村中的各类管线(如电力、给排水、燃气、通信和有线电视等)...
在 Visual C++ 6.0(简称 VC6.0)环境中开发基于 ArcGIS 10 的应用时,首先需要在集成开发环境(IDE)中创建一个新的工程。具体步骤如下: 1. **打开 VC6.0**:启动 Visual C++ 6.0。 2. **新建工程**:选择“File...
vc+ArcEngine建立框架程序:制作浮动可变大小的控制窗口,可以实现图层拖放-vc+ ArcEngine procedures for the establishment of the framework: the production of a floating variable to control the size of the ...
### 常见的VC编译错误解析 在VC++编程过程中,遇到各种编译错误是在所难免的,尤其对于初学者而言,了解并掌握如何处理这些错误是至关重要的。下面将详细介绍文中提及的一些常见编译错误及其解决方法。 #### 1. `...
Arc Engine与VS的安装步骤 Arc GIS engine与VS的安装步骤是GIS开发者不可或缺的知识点,本文将详细介绍Arc GIS engine 10.2与VS2012的安装步骤,并提供了亲测的截图报告。 一、ArcGIS License Manager的安装 首先...
在使用Microsoft Visual C++ 6.0(简称VC6)进行MFC应用程序开发时,开发者可能会遇到各种编译和链接错误。以下将详细介绍标题和描述中提到的两个常见错误及其解决办法。 首先,我们来看“Fatal Error C1010”。这...
在使用VC进行程序开发时,经常会遇到各种编译错误,这些错误可能导致项目无法正常编译或运行。本文将详细解析最常见的16种VC编译错误,并提供相应的解决策略。 1. **未定义标识符**:当编译器找不到声明的变量、...