这个错误我是找了好多天才找到了
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
对于独立的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;
}