1、COM组件失败
初次编译MapWindow5,总是碰到COM组件失败的问题,如下图所示:
异常内容为:
System.TypeInitializationException
HResult=0x80131534
Message=“MW5.Api.Static.MapConfig”的类型初始值设定项引发异常。
Source=MW5.Api
StackTrace:
at MW5.Api.Static.MapConfig.set_ZoomToFirstLayer(Boolean value) in ***\MapWindow5-5.3.0\src\MW5.Api\Static\MapConfig.cs:line 86
at MW5.Helpers.MapInitializer.InitMapConfig() in ***\MapWindow5-5.3.0\src\MW5\Helpers\MapInitializer.cs:line 105
at MW5.Program.LoadConfig(IApplicationContainer container) in ***\MapWindow5-5.3.0\src\MW5\Program.cs:line 51
at MW5.Program.Main() in ***\MapWindow5-5.3.0\src\MW5\Program.cs:line 86
内部异常 1:
COMException: 检索 COM 类工厂中 CLSID 为 {80CDFEE0-576F-4141-906E-877638A2AEF3} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
后经查询官方网站https://www.mapwindow.org/documentation/mapwindow5/compile.html得知,在调试主程序之前需要注册MapWinGIS.ocxCOM组件。但是,直接运行“MapWinGIS”目录中的“regMapWinGIS.cmd”命令行文件,调试程序总是不成功,后经网上调研查询Windows的COM组件注册方法,突然想到MW5项目为x64架构,而“regMapWinGIS.cmd”命令行默认运行时调用的是32为的COM组件注册程序。因此,解决该问题的关键是需要使用64位的regsvr32命令来进行COM组件的注册:
1. 首先“以管理员身份运行”CMD命令窗;
2. 使用cd命令跳转到64位regsvr32.exe文件存储目录“C:\Windows\SysWOW64”;
3. 执行命令“regsvr32 /s *\MapWinGIS\MapWinGIS.ocx”,注册**MapWinGIS.ocx**COM组件;
4. 再此运行MW5项目,可看到能够正常启动MapWindow5主界面如下图所示。
#2、界面编辑器异常问题
在想对MW5的系统界面进行编辑设计时,大多界面都显示下图所示的类似界面: