AE呼叫GP工具“對COM元件的呼叫返回了錯誤 HRESULTE_FAIL”解決
首先說下AE開發中關於gp這一塊的東西,gp是一個很方便的工具,利用gp可以在程式碼中實現ArcMap工具箱中的大部分內容,關於gp工具的使用我就不說了,這些大部分都可以在網上找到,我要說的是gp使用過程中遇到的問題:一般gp的報錯為 對 COM 元件的呼叫返回了錯誤 HRESULT E_FAIL。如下圖遇到這樣的問題的可能原因目前我所知道有三個:
1、引數缺少或者引數型別不正確,這是最容易解決的,改變正確的引數型別即可;
2、引數路徑不正確,或者gp的overwrite屬性未設定,例如一個不存在的路徑或者該路徑下已有同名檔案,這個問題就需要設定overwrite屬性為true;
3、重點來了,排除以上兩個錯誤的情況下還是出現了這種問題,很多人估計就束手無策了,我查閱了很多資料,最後發現是gp使用的某些工具必須需要足夠的許可權來執行,一般我們axlicenseconrol控制元件預設的是arcgisengine許可權
//初始化許可
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
IAoInitialize m_AoInitialize = new AoInitializeClass();
esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable;
//licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced); m_AoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);
新增相關程式碼在主窗體的建構函式的InitializeComponent();前面即可。
轉自:http://blog.sina.com.cn/s/blog_b25e55800102vtdt.html