1. 程式人生 > >GDAL C# “OSGeo.GDAL.GdalPINVOKE”的型別初始值設定項引發異常 解決方法

GDAL C# “OSGeo.GDAL.GdalPINVOKE”的型別初始值設定項引發異常 解決方法

在使用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的,切忌一定要對應,否則就會引發一些異常,比如下面的圖片所示。