利用 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他們 簡直 太惡心了。
