在使用开发C#下的GDAL时,编译时正确。
在执行
Gdal.AllRegister();
出现异常:OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常。
解决方案:
编译正常,说明已经正确添加GDAL主要的八个动态库DLL。
分别是gdal_csharp.dll,gdal_wrap.dll,gdalconst_csharp,gdalconst_wrap.dll,ogr_csharp.dll,ogr_wrap.dll,osr_csharp.dll,osr_wrap.dll。
其中,带尾巴的_csharp.dll是C#项目所需要引用的文件,而带_wrap.dll是需要直接放在执行目录下的。
而编译出错的原因是少了其他一些DLL。
GDAL C# DLL下载:
http://www.gisinternals.com/sdk/
在上面网址,点击Stable Releases
可根据使用的版本点击进入相应的界面。比如使用的是2013 win32。
点击下载,release-1800-gdal-1-11-4-mapserver-6-4-3.zip
解压后,打开bin文件夹,里面有N个dll,把这些dll拷贝到项目的执行目录下即可(这些DLL也包括了以上的八个DLL,推荐更换)。只拷贝bin文件夹的dll,其他文件夹的不用拷贝。
另外,可以下载release-1800-gdal-1-11-4-mapserver-6-4-3-src.zip,里面有相关的源码,进行更深层次地研究。