在使用開發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,里面有相關的源碼,進行更深層次地研究。
