VC2013 ArcGIS Engine 10.0开发环境搭建

来源:互联网 发布:导出来的sql带双引号 编辑:程序博客网 时间:2024/04/20 06:21

VC2013 + ArcGISEngine10.0

——贵阳汉康

首先,当然是要安装好ArcObjects SDK forCross Platform C++;

安装好后,我们在VS2013里新建一个MFC的项目,比如命名为ggg,在MFC应用程序向导中,“应用程序类型”一项我们选择单文档,“生成的类”一项中,基类选择CFormView,点完成之后按照以下几个步骤:

环境配置搭建

在项目名上右击——》属性,如图1:

图1

在包含目录里添加AE的相关路径,如图2上部框里所示的三个路径。如果已经在配置文件里设置好后,那么三个路径会显示在下部红框中,此步就省略。


图2

然后在C/C++选项的预处理器中添加:ESRI_WINDOWS,如图3:

图3

这几步完了之后可以在stdfx.h中include  ArcSDK.h 这个文件,编译的时候你会发现好多错错喔,不要怕怕,名称冲突而已。如图4:

图4

在AE的安装路径中找到相关的同名头文件重命名一下,我的路径是:C:\Program Files(x86)\ArcGIS\DeveloperKit10.0\include\CPPAPI\olb。比如第一个错误,原头文件是这样的:

#import "esrisystemui.olb"raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_HANDLE","OLE_COLOR","UINT_PTR" )

错误中有两个冲突名ICommandIProgressDialog,我们把它改为这样:

#import "esrisystemui.olb"raw_interfaces_only raw_native_types no_namespacenamed_guids exclude("OLE_HANDLE","OLE_COLOR", "UINT_PTR" ) rename("ICommand","esriICommand")  rename("IProgressDialog", "esriIProgressDialog")

现在运行调试应该是没有问题了。

 

接下来就做一个显示示例吧

在刚才创建的项目,在资源视图打开对话框,右键单击选择“插入ActiveX控件”,如图5,选择MapControl插件,然后添加许可绑定代码,新建一个方法,添加如下代码:

BOOL CMainFrame::InitialAE()

{

          // 绑定许可

              IArcGISVersionPtr ipVer(__uuidof(VersionManager));

              VARIANT_BOOLsucceeded;

              if (FAILED(ipVer->LoadVersion(esriArcGISEngine, L"10.0",&succeeded)))

                     return false;

 

// 初始化许可

              IAoInitializePtripInit(CLSID_AoInitialize);

              esriLicenseStatus status;

              ipInit->Initialize(esriLicenseProductCodeEngine, &status);

              if (status != esriLicenseCheckedOut)

                     AoExit(0);

              return true;

}

CMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct)中加入以下两句:

        ::CoInitialize(NULL);

BOOL isOk = InitialAE();

 

然后随便拖入一个按钮,单击事件如下处理:

void CgggView::OnBnClickedButton1()

{

       BSTR file=SysAllocString(L"D:\\GISDataBase\\TestMap.mxd");

       VARIANT pa;

       pa.vt = VT_EMPTY;

       VARIANT pp;

       pp.bstrVal=SysAllocString(L"");

 

       m_MapTest.LoadMxFile(file,pa,pa);

}

运行调试单击

图5

0 0