OSGeo.MapServer.mapscriptPINVOKE错误的解决

    在使用C#开发MapScript的时候这是出现最频繁的错误。结合我开发中遇到的问题,总结了可能的导致该错误的原因,也许不全面,但也能解决一部分问题。如果大家有其他解决办法,也希望告知,一起学习。 

 

    最经常遇到的出错原因就是缺少依赖库导致。如果是WinForm程序,通常会产生如下的错误信息: 

 

OSGeo.MapServer.mapscriptPINVOKE”的类型初始值设定项引发异常。 

 

        WEB程序中的错误信息不太一样,可能是: 

 

无法加载DLL”mapscript”:找不到指定的程序。(异常来自HRESULT:0x8007007f)。

 

 

    如果程序中引用了mapscript_csharp.dll,那么程序在执行时会首先在程序的执行目录下寻找它所有的依赖库,如果找不到再到system32下去找,然后是系统目录中寻找。这几个地方都找不到就会报如上错误。我的习惯是将所有的依赖动态库都放到程序的执行目录之下,具体放哪里看你的爱好,效果应该都一样。

 

    当然首先要解决的问题就是如何找到mapscript.dll的每一个依赖库,然后将其放到执行目录之下或者是system32目录下。我一般使用depends工具来查找依赖库,这个工具很好用,一个都不会漏掉,使用也很方面,直接将mapscript.dll拖进去就能看到所有缺少的依赖库,如下图: 

 

 

    将上图中这几个缺少的动态库找到,放到应该放的地方,一般来说这样就可以解决问题了。 

 

    如果这么做了还是不行,那你人品实在是太不好了,很有可能是依赖库版本不正确,这时候找起来就比较麻烦了。我遇到过一次,后来放弃了找版本,直接下载了一套最新的库。 

 

    我建议是直接下载ms4w或者是fwtool,他们提供的动态库一般比较全面,即使缺少也不会很多。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值