【完美解決】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他們 簡直 太惡心了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM