ArcEngine10.2及以下版本转换成ArcEngine10.4及以上版本 异常来自HRESULT:0x80040228

23 篇文章 5 订阅

 

AE开发中打开shp经常会用到以下的代码:

IWorkspaceFactory testfactory = new ShapefileWorkspaceFactory();
IWorkspace testwork = testfactory.OpenFromFile(foldername, 0);

之前用的版本vs2015+AE10.2.2一直好好的,换成AE10.4版本之后报错:异常来自HRESULT:0x80040228。

这个错误基本上是axcontrol控件、AE许可方面的问题。看了网上的解决办法,大多数是以下两种方法:

1、界面上添加axcontrol控件(我的已有)

2、program页面里添加:

using ESRI.ArcGIS.esriSystem
IAoInitialize m_aoinitialize = new AoInitializeClass();
m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo);

试了之后也是无效的。最终参考了以下两篇文章,验证是有效的。

https://blog.csdn.net/qq_29176825/article/details/84864939

https://www.cnblogs.com/liweis/p/8675903.html

做了修改后的终极方法:在program页面里添加:

ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
//以下为新增的代码
IAoInitialize aoInit = new AoInitializeClass();        
aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcServer);

待修改程序的Program.cs文件为如下所示: (其中XXXX与xxxxx分别填程序的命名空间与要启动的窗体名称)

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using ESRI.ArcGIS;
using ESRI.ArcGIS.esriSystem;
 
namespace XXXX    //XXXX为程序的命名空间
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            if (!RuntimeManager.Bind(ProductCode.Engine))
            {
                if (!RuntimeManager.Bind(ProductCode.Desktop))
                {
                    MessageBox.Show("Unable to bind to ArcGIS runtime. Application will be shut down.");
                    return;
                }
            }
            IAoInitialize m_aoinitialize = new AoInitializeClass();
            m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new xxxxx);  //xxxxx为你要启动的窗体名称
        }
    }
}

3、第三种情况:由于AE未破解的缘故,只破解desktop并不行。需将破解文件中的afcore.dll(与desktop等同),将此文件拷贝到engine10.4文件夹下的bin子文件夹,替换原许可文件。这时就可以成功。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值