解决AE中GP工具错误 对 COM 组件的调用返回了错误 HRESULT E_FAIL

时间:2022-06-12 18:30:32

开发环境 vs2010(C#)+arcengine 10

在使用GP工具调用arctoolbox完成格式转换时,总是报错   对 COM 组件的调用返回了错误 HRESULT E_FAIL然后晚上找了一些解决办法:

1. 配置MSDTC

参见  http://blog.sina.com.cn/s/blog_58b4162f01018uex.html   但还是没解决我的问题。我的MSDTC中没有  安全配置 这一项然后找了怎么显示安全配置的方法(注:local DTC properties(本地DTC属性)在我的电脑的子项里)

解决AE中GP工具错误 对 COM 组件的调用返回了错误 HRESULT E_FAIL

可是我的电脑却没有 安全 选项卡

2. 许可证问题

参见 http://blog.csdn.net/u011116642/article/details/17073471

大致办法是在program.cs中加入

            ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
            #region 初始化许可
              IAoInitialize m_AoInitialize = new AoInitializeClass();
            esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable;
            licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo);
            if (licenseStatus == esriLicenseStatus.esriLicenseNotInitialized)
            {
                MessageBox.Show("没有esriLicenseProductCodeArcInfo许可!");
                Application.Exit();
            }
            #endregion

上面代码放在加载form前。


上面的方法都没有解决问题,为了找到具体问题  加入了问题反馈

加入代码:

object sev = null;
            try
            {
                // Execute the tool.
                gp.Execute(ToCAD, null);
                Console.WriteLine(gp.GetMessages(ref sev));
            }
            catch (Exception ex)
            {
                // Print geoprocessing execution error messages.
                MessageBox.Show(gp.GetMessages(ref sev));
            }

最后显示的是读取数据的时候失败,换了一个文件后运行成功(其实在arcmap里面是可以运行的,不知为啥这里不行)。