Could not bind to a valid ArcGIS installation问题的解决

来源:互联网 发布:德州冠军软件 编辑:程序博客网 时间:2024/06/03 02:15

这个错误我是找了好多天才找到了

 

AE(ArcgisEngine)在用VC环境进行开发时,对license的初始化失败,

并在VC的编译输出窗口中提示Could not bind to a valid ArcGIS installation

是因为VC没找到Arcgis Engine的安装位置,参考官网的介绍(好不容易找到的)

http://help.arcgis.com/EN/sdk/10.0/ArcObjects_NET/conceptualhelp/index.html#//000100000nmm000000

Loading an ArcGIS runtime

Stand-alone ArcGIS applications must locate an appropriate ArcGIS product installation before any ArcObjects code (including license initialization) is called. You must decide what runtime is needed for the application. This must be done whether the license initialization is carried out using the LicenseControl or by using the AoInitialize class. The application programming interfaces (APIs) used to bind to the ArcGIS runtime are in IArcGISVersion in the ArcGISVersionLib namespace. To bind to the runtime, make a call to the LoadVersion method. See the following code example:

 

对于独立的Arcgis 应用程序必须先绑定一个runtime,方法如下

// Load the ArcGISVersion library.

// This code is commonly placed in the StdAfx.h header file.

//这段代码放到stdafx.h里(或者放到主要的头文件中)

#import "libid:6FCCEDE0-179D-4D12-B586-58C88D26CA78" raw_interfaces_only no_implementation

--------------------------------------分割线--------------------------------------------------------------

// The following code can be used to bind to ArcGIS Engine Runtime:

//下面的代码要加在::AoInitialize(NULL);之后,IAoInitializePtr ipInit(CLSID_AoInitialize);之前

ArcGISVersionLib::IArcGISVersionPtr ipVer(__uuidof(ArcGISVersionLib ::VersionManager));

VARIANT_BOOL succeeded;

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

return 0;

------------------------------

例如 main.cpp

#import "libid:6FCCEDE0-179D-4D12-B586-58C88D26CA78" raw_interfaces_only no_implementation

‍#include <ArcSDK.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
int LocateTheArcgisVersion()
{
ArcGISVersionLib::IArcGISVersionPtr ipVer(__uuidof(ArcGISVersionLib::VersionManager));
VARIANT_BOOL succeeded;
if (FAILED(ipVer->LoadVersion(ArcGISVersionLib::esriArcGISEngine, L"10.0",&succeeded)))
return 0;
return 1;
}
int main(int argc, char **argv)
{

::AoInitialize(NULL);
LocateTheArcgisVersion();
// ArcGIS Engine licensing
IAoInitializePtr ipInit(CLSID_AoInitialize);
esriLicenseStatus status;

ipInit->Initialize(esriLicenseProductCodeEngine,&status);
if(status == esriLicenseCheckedOut)
{
cout<<"lisense ok"; 
}


::AoUninitialize();
system("PAUSE");
AoExit(0);
return 0;
}

原创粉丝点击