SuperMap iObjects .NET加载dll动态库失败,控件不能用问题解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SuperMap iObjects .NET加载dll动态库失败,控件不能用问题解析相关的知识,希望对你有一定的参考价值。

参考技术A 初次部署使用SuperMap iObjects .NET的开发人员,可能遇到以下问题:

1.环境部署不成功

2.部署成功了,VS工具箱里面没有SuperMap相关控件

3.工具箱里面的SuperMap相关控件拖到界面上报错

4.运行程序,报错未能加载文件或程序集

下面我们将对上述问题来使用“套路”一一解决。

大前提: 很多用户喜欢在工具箱里面拖控件使用,可视化的管理控件的属性,但遇到了上面所述
的问题不知道如何解决,这里我们先说一个“大前提”,要想使用工具箱里面的控件,无论你的计
算机操作系统是32位的还是64位的,只能部署SuperMap iObjects .NET 32位的开发环境(VS的
限制,超图也很无奈啊),这样才能注册工具箱。当然,不需要通过拖控件,习惯new控件来使用
的用户,你的计算机操作系统是32位的就安装32位的SuperMap iObjects .NET,你的计算机操作
系统是64位的,那么部署SuperMap iObjects .NET 32位还是64位的运行环境就任君选择了。

一.环境部署不成功

使用Install_x86.bat/Install_x64.bat 文件来完全部署的用户,如果部署过程中出现问题,解决的套路很简单。

1.关闭所有杀毒软件(最好连防火墙都关了)

2.关闭VS(可能会涉及到安装Microsoft .NET Framework 4.0)

3.以管理员身份运行Install_x86.bat/Install_x64.bat 文件

自定义部署不成功的用户,上面的套路照样可用,但通常出现问题是在注册工具箱的时候,我们在“大前提”里面说过,要使用工具箱来拖控件,就只能部署SuperMap iObjects .NET 32位的运行环境!所以注册工具箱的环境,要是32位的。当然,不需要注册工具箱的用户,这一点就可以不用关注。

二.部署成功了,VS工具箱里面没有控件

1.工具箱右键---->添加选项卡

3.在新打开的页面中选择.NET Framework组件,点击浏览,找到SuperMap iObjects .NET 目录下32位bin包(x86)的SuperMap.UI.Controls.dll,SuperMap.Mapping.dll,SuperMap.Layout.dll,SuperMap.Realspace.dll,SuperMap.Data.dll,添加后点击确定。

4.此时看看我们的工具箱,是不是就有了相关控件了

三.工具箱里面的控件拖到界面上报错

这个问题的解决办法是把SuperMap iObjects .NET 目录下32位的Bin包路径加在环境变量中
具体操作如下:
1.打开计算机

2.点击系统属性

3.点击高级系统设置

4.点击环境变量

5.双击系统变量中的path变量

6.然后找到SuperMap iObjects .NET组件目录下的32位bin包路径,加在系统环境变量path中(没有的话就新建一个path)

瞬间搞定问题

四.运行程序,报错未能加载文件或程序集

上面这种错误,解决办法如下:

1.把你引用的dll文件所在bin包目录添加到环境变量中,具体方法上面已经说过了。

2.确认你的许可是否有你所用到的功能模块,一般试用许可会包含所有的功能模块,而正式许可不一定包含全部的功能模块,具体检查方法如下:

(1)打开许可中心

(2)在许可状态中查看有哪些模块以及许可是否已经过期

3.如果使用的场景的功能,计算机显卡不支持的话,也会抛出这个异常。一个简单的检验办法就是打开桌面软件(SuperMap iDesktop),看三维功能是否能正常使用。

还有一种运行程序比较常见的错误是:未能加载文件或程序集 ‘SuperMap. Version =***’ 或者它的某一个依赖项。试图加载格式不正确的程序’

解决办法如下:

第一,保证编译目标平台位数和引用的dll文件动态库位数保持一致
具体操作:

1.选中工程,右键选择属性

2.选择一致的目标平台

第二,环境变量中只有一个组件bin路径,且与引用动态库路径保持一致,具体的查看和修改方法上面已经说过,这里不再赘述。

第三,把工程的工作目录和引用路径设置为引用动态库路径,这一点可以用来检测出现的问题是否跟环境变量有关。设置好了之后,程序能够运行起来,说明问题就出在环境变量上,还是不能运行起来的话,就不用纠结环境变量了,问题不在这上面,得找找其它原因。

第四,选择合适的.NET Framework框架,SuperMap iObjects .NET 6R版本,得选择.NET Framework 3.5及以下,SuperMap iObjects .NET 7C,8C版本,得选择.NET Framework 4.0及以上。

以上就是解决此类问题的“套路”,有了这些“套路”,此类问题就可以对症下药,迎刃而解了。

以上是关于SuperMap iObjects .NET加载dll动态库失败,控件不能用问题解析的主要内容,如果未能解决你的问题,请参考以下文章

SuperMap iObject入门开发系列之四管线长度统计

SuperMap iObject入门开发系列之一组件式GIS开发平台介绍

SuperMap iObject入门开发系列之三管线系统标注

SuperMap iObject入门开发系列之五管线属性查询

supermap cesium 加载倾斜摄影

SuperMap Deskpro .NET 6R(2012)怎么安装??我安装好了,打开提示supermap许可不可用。检查配置是不是正确