You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#项目添加GDAL NuGet包后调用Ogr.CreateGeometryFromJson报加载ogr_wrap DLL错误

解决方案

1. 手动调整ogr_wrap.dll的位置

找到NuGet包安装目录下的gdal/x64/ogr_wrap.dll(通常路径类似packages/GDAL.Native.3.7.2/runtimes/win-x64/native/gdal/x64),将其复制到项目输出目录(如bin/Debug/net8.0/x64),和ogr_csharp.dll放在同一层级。也可以在项目中添加该文件,右键设置复制到输出目录为始终复制,实现自动同步。

2. 通过代码添加DLL搜索路径

在调用OGR相关方法前,添加代码让CLR识别到子目录下的DLL:

using System;
using System.Runtime.InteropServices;

// 初始化GDAL/OGR前执行此代码
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);

// 指向你的gdal/x64子目录路径
SetDllDirectory(AppDomain.CurrentDomain.BaseDirectory + @"gdal\x64");

注意:发布独立部署包时,要确保该子目录结构被完整包含到发布包中。

3. 用构建事件自动复制文件

在项目属性的生成事件 -> 预生成事件命令行中添加以下命令,实现编译时自动复制ogr_wrap.dll到输出目录:

xcopy /Y "$(SolutionDir)packages\GDAL.Native.3.7.2\runtimes\win-x64\native\gdal\x64\ogr_wrap.dll" "$(TargetDir)"

请根据你的NuGet包实际安装路径调整命令中的版本号和目录结构

4. 检查依赖完整性

用Dependency Walker工具打开ogr_wrap.dll,确认它依赖的其他GDAL原生库(如gdal37.dll等)是否存在且可被搜索到,缺失的依赖也需要放到可访问路径中。


内容的提问来源于stack exchange,提问作者Vedran Mornar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:22:07