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

来源:互联网 发布:unity3d 模型下载 编辑:程序博客网 时间:2024/05/18 00:55

初次部署使用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.工具箱右键—->添加选项卡

这里写图片描述
2.右键新建的选项卡——>选择项

这里写图片描述

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及以上。

这里写图片描述

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

0 0