在使用C#中的GDAL时出现异常

18

我开始在我的应用程序中使用 gdal_csharp dll 并读取一个 geotiff 文件,但它显示:

The type initializer for 'OSGeo.GDAL.GdalPINVOKE' threw an exception.

这是我的代码

string fileName = @"/path to geotiff file";

OSGeo.GDAL.Dataset DS = 
    OSGeo.GDAL.Gdal.Open(fileName, OSGeo.GDAL.Access.GA_ReadOnly);

有人能帮忙吗?

编辑:

我有这些dll文件

图片描述

这是完整的错误信息:

图片描述

它说无法加载 gdal_wrap。但当我尝试将该dll添加到我的应用程序中时,会显示以下消息:

图片描述


1
这段代码是原封不动的,还是你已经给fileName分配了一个真实路径?如果你能提及自己为解决这个问题所做的努力,那会更有帮助。 - Tieson T.
1
由于它是类型初始化程序,它与fileName或调用Open方法无关。首先检查您的依赖项(.net/操作系统版本/库)。 - Ventsyslav Raikov
@Tieson T. 是的,fileName 变量被分配了一个真实路径。 - Hossein Narimani Rad
正如PLB所提到的,似乎缺少一个dll文件,请使用Dependency Walker和Process Monitor来确定是哪个文件。 - Appleman1234
这个问题解决了吗?我在使用VS 2012和GDALInfo.cs时遇到了同样的问题。 - Markus M.
显示剩余2条评论
11个回答

0

通过更改配置行进行修复

string executingAssemblyFile = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath;
executingDirectory = Path.GetDirectoryName(executingAssemblyFile);

executingDirectory = Directory.GetCurrentDirectory();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接