zoukankan      html  css  js  c++  java
  • AE10 运行时绑定(解决Could not bind to a valid ArcGIS installation)

    AE10中一个明显的改变就是运行时绑定,ArcGIS10有一些明显的产品架构上变更。新架构最明显的优势是独立存在的ArcGIS DesktopEngine runtime。你可以将ArcGIS DesktopEngine安装在不同的目录下。你同样可以分别为EngineDesktop打补丁。但是这种构架的变化要求你将你的Engine程序以及自定义组件绑定到你机器上指定的产品。独立应用程序既可绑定到Desktop也可以绑定到Engineruntime。但是,要在程序使用AO之前就做好绑定。

    那么,应该如何绑定呢(C#实现)

    首先添加引用:

    ESRI.ArcGIS.Version

    然后

    ESRI.ArcGIS.RuntimeManager.Bind(ProductCode.Engine)

    那么,绑定就结束了,是不是很简单啊。

    其他的一些新增函数

     RuntimeManager.BindLicense()

    绑定运行时同时初始化许可

     RuntimeManager.InstalledRuntimes

    返回已安装的运行时

    RuntimeManager.ActiveRuntime

    返回当前已绑定的运行时

    RuntimeInfo

    获得路径、版本等信息

    这些信息在网上很容易找到,那么,如果是用C++该如何实现呢

    VARIANT_BOOL InitializeLicense(esriLicenseProductCode product)
    {
    IAoInitializePtr ipInit(CLSID_AoInitialize);
    esriLicenseStatus licenseStatus
    = esriLicenseFailure;
    ipInit
    ->IsProductCodeAvailable(product, &licenseStatus);
    if (licenseStatus == esriLicenseAvailable)
    ipInit
    ->Initialize(product, &licenseStatus);
    return (licenseStatus == esriLicenseCheckedOut);
    }

      这是主要的代码,但是仅仅是这样,编译的时候就会出问题,所以在绑定前,还需要LoadVersion,在stdafx.h中添加如下代码

    /* Version support */
    #import
    "libid:6FCCEDE0-179D-4D12-B586-58C88D26CA78" no_namespace raw_interfaces_only no_implementation rename("esriProductCode", "esriVersionProductCode")
    #define PRODUCTSTRING(ver) L"" L#ver
    #define ESRI_SET_VERSION(prod,vers)
    {

    HRESULT hr;

    VARIANT_BOOL vb;

    CComBSTR bsVer(PRODUCTSTRING(vers));

    IArcGISVersionPtr ipVersion(__uuidof(VersionManager));

    if(!SUCCEEDED(hr = ipVersion->LoadVersion(prod, bsVer, &vb)))

    fprintf(stderr,
    "LoadVersion() failed with code 0x%.8x\n", hr);
    else if(vb != VARIANT_TRUE)
    fprintf(stderr,
    "LoadVersion() failed\n");
    }

      在InitInstance()中最开始,就调用

    ::CoInitialize(NULL);

    ESRI_SET_VERSION(esriArcGISEngine,
    10.0)

    InitializeLicense(esriLicenseProductCodeEngine);

      至此,已经完成许可初始化与运行时绑定。

    参考资料:

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

    http://hi.baidu.com/o%B3%A3%BD%F8/blog/item/eb9e590dc04a7d0a95ca6ba8.html


  • 相关阅读:
    解决mac启动springboot项目很慢的问题
    Oracle如何创建索引、删除索引、查询索引
    查看Oracle索引是否被使用或者有效
    Mysql创建、使用循环函数
    处理idea加载不到Spring的xml或者properties配置文件
    UML常用图、常见关系、设计模式
    设置文本框能够滚动
    MFC中的ID命名规则
    MFC应用中如何触发ON_MESSAGE
    使用MFC创建一个可视化程序
  • 原文地址:https://www.cnblogs.com/junyuz/p/2158090.html
Copyright © 2011-2022 走看看