在使用C#版本的GDAL开发的时候,编译正常,启动的时候就会提示:“OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常。“
对于这个问题,原因主要就是没有找到dll导致的,在使用的时候不但要把C#的那八个dll拷贝到exe所在目录,还需要把gdal19.dll及其依赖的dll都拷贝过去,很多同学以为只要有了那八个C#版本的dll就ok了,其实是不对的,C#版本的8个dll只是导出了C#的接口而已,调用的还是C++版本的gdal库。
对于Python版本也是一样,需要将gdal19.dll及其依赖的dll全部拷贝到python的安装目录下。
————————华丽的分割线,下面2012-12-14日添加————————————————
在使用C#的版本的时候一定要注意编译GDAL的时候用的编译器和版本,比如你下载的GDAL的用VS2008编译的32位的dll,那么在C#中使用的时候先要安装Visual Studio2008的C++运行库,具体可以去微软的官方搜(注意VS的版本也有好多,有SP1的版本,还有没有打过SP的版本,运行库都不一样)。完成了这些步骤,建议使用GDAL的那些exe工具测试一下,双击其中一个,如果可以弹出帮助信息说明OK,如果不行请继续找对应的C++运行库。
上面只是说明GDAL在你的系统中可以正常工作,下面是在使用C#调用的时候,需要把配置管理器中的anycpu进行修改,如果GDAL是32位的,那么这里需要创建一个X86的,如果是64位的,创建一个X64的,切忌一定要对应,否则就会引发一些异常,比如下面的图片所示。