• 【完美解决】arcgis engine 10.0 for cross platform C++ 在visual studio2010上编译的AE程序 的License无法初始化错误。


    利用 vs2010 编译运行(debug运行方式)arcgis engine for C++ 10.0 的sample文件 出现这样的错误。

    LicenseUtilities::InitializeApp -- Unable to initialize ArcObjects (no appropria
    te license available).

    原来以为 是无法初始化lisence,可能是 C++和 java的lisence不一样呢,可是今天恍然大悟。

    vs2010 编译运行 有一些 看不到的东西。

    使用 Nmake /f nmakefile.mk 也可以编译出来 exe 可执行文件,而且 没有License错误,看来 是vs2010 搞的鬼。vs2010 配置起来 太tmd 穷酸的 难了。。。。。。。

    还是 用命令行 配置最简单,用 vs2010编码 比较合适,不过 调试 debug  还是 vs2010好,但是 它又无法 编译 出来 正常的 arcgis engine的 exe可执行文件来。

    nmakefile.mk文件示例为:

    !include <$(AGSDEVKITJAVA)\Samples\ArcObjectsCPP\MakefileUtilities\mk.Windows>
    
    PROGRAM = ArcGISEngineCpp.exe
    CPPSOURCES = ArcGISEngineCpp.cpp LicenseUtilities.cpp    
    
    CPPOBJECTS = $(CPPSOURCES:.cpp=.obj)
    CPPHEADERS =ArcGISEngineCpp.h      LicenseUtilities.h
    
    
    all:   $(PROGRAM)
    
    $(PROGRAM): $(CPPOBJECTS)
        link.exe /out:$@ $** $(LINKFLAGS)
    
    clean:
        del $(PROGRAM)
        del $(CPPOBJECTS)  
        del *.tlh

    你的程序 只需要 更改红色的三行就可以了。其意思 很明显:可执行文件名称(就是link命令所干的事情),cpp和h文件(就是 cl.exe编译器 干的事情)。

    nmake.exe文件 如果你无法运行,确保你安装了 vs2010 并且 运行了 

    vs2010 的命令行,cmd里显示有:

    Setting environment for using Microsoft Visual Studio 2010 x86 tools

    才行。

    其实 vs2010的命令行里 也是 调用了 其他的bat 来设置 vs2010的环境变量。

    自己只设置 path环境变量还不行,运行nmake根本没反应,没输出,直接完毕。有点郁闷的行为。

    vs2010 的命令行 执行的文件是:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat

    一般 需要编译的目标平台是x86,所以直接运行call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" 就可以执行 nmake 和cl link等vs2010 核心命令了。

     ================

    最新消息,我已经知道 为什么 vs2010 编译的 arcgis engine 10.0 for C++ 应用程序 Lisence初始化失败呢?原因就是:

    在visual studio的项目属性:  c/c++ 命令行  其他选项 添加 下面的一个 宏定义 /DARCGIS_VERSION="10.0" 即可。也可以在 所有 h头文件 添加 #define ARCGIS_VERSION 10.0

    我是如何知道的呢??

    通过visual studio可以获得 cl编译器 的命令行参数是什么,如图所示(下面已经添加了 arcgis_version):

    而使用 nmake生成的可执行文件 初始化 arcgis engine Lisence 没问题,运行的时候会有 cl 和参数如对比图:

    下面的是 nmake执行过程中的 一段,看看 cl后门的参数。发现 下面多了一个关键的 -DArcgis_version=10.0(应该 要区分大小写的!),上面没有,那么就添加上去 再用vs2010编译即可。

    完美解决此问题,此问题 在 arcgis  engine for c++的文档上 根本就没有显示。ESRI他们 简直 太恶心了。

  • 相关阅读:
    回顾C#3.0新特性(3)
    第五周作业
    第六周基础作业
    第三周syh
    基础作业
    第七周作业
    2019年春季学期第四周作业
    第八周作业
    .Net 反射
    C#中SqlParameter
  • 原文地址:https://www.cnblogs.com/ayanmw/p/2563768.html
Copyright © 2020-2023  润新知