利用 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他们 简直 太恶心了。