C# 链接GDAL Gdal.AllRegister()、Ogr.RegisterAll()异常处理

C# 链接GDAL Gdal.AllRegister()、Ogr.RegisterAll()异常处理

标签(空格分隔): c# gdal


将gdal中cshape文件夹中8个dll拷贝到项目的/bin/debug下,并将 _csharp.dll链接至项目中时,我本人的程序会出现两个错误:
“OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常
“OSGeo.OGR.Ogr”的类型初始值设定项引发异常

第一个问题可以通过博客GDAL C# 开发环境配置得到解决。

其实第一个问题和第二个问题都是dll库的关联库没有全部拷贝至项目的/bin/debug下造成的。
解决方法就是要将gdal***.dll(*代表版本号)所有关联的dll都拷贝至/bin/debug


查询gdal***.dll的关联动态库

1、找到vs的命令提示符,如图

C# 链接GDAL Gdal.AllRegister()、Ogr.RegisterAll()异常处理

2、输入:dumpbin /dependents c:\…\…\…\gdal***.dll即可看到该dll所关联的dll

C# 链接GDAL Gdal.AllRegister()、Ogr.RegisterAll()异常处理

3、将gadl中能查到的属于上图中关联的dll,和gdal***.dll拷贝至项目的/bin/debug。最终还需要放在项目中的dll大致是这些:

C# 链接GDAL Gdal.AllRegister()、Ogr.RegisterAll()异常处理


此时程序就可以正常运行了。