• 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


  • 相关阅读:
    归类常用控件GroupBox、TabControl、Expander
    ScrollViewer控件
    捕获鼠标位置
    5、标记拓展
    如何实现文件增量同步——算法
    常用的 Nand Flash 指令如下:
    Consistent Hashing算法
    循环冗余检验 (CRC) 算法原理
    yaffs2根文件系统的构建过程
    linux内存管理之uboot第一步
  • 原文地址:https://www.cnblogs.com/junyuz/p/2158090.html
Copyright © 2020-2023  润新知