System.TypeInitializationException:““OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常。”

本文介绍了两种导致System.TypeInitializationException:“OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常的情况及其解决方案。第一种情况是通过Nuget安装GDAL和GDAL.Native后,通过修改GdalConfiguration.cs文件进行初始化配置。第二种情况涉及手动下载GDAL库,设置环境变量,并在VS项目中引用dll文件。确保正确配置环境变量和平台目标可以避免该异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:System.TypeInitializationException:““OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常。”
在这里插入图片描述
下面有两种安装配置的过程,均产生上述问题,介绍配置过程及解决办法:
产生过程1:用Nuget下载安装GDAL和GDAL.Native后,直接放上示例代码运行,没配置任何环境变量,就产生上述问题。
步骤1:打开一个控制台应用(.NET Framework),项目——管理Nuget程序包——浏览,如下图
在这里插入图片描述
步骤2:搜索GDAL与GDAL.Native,安装。
在这里插入图片描述
步骤3:在Debug的配置管理器——新建——x64平台,运行代码,产生上述问题。
在这里插入图片描述
解决:安装完GDAL和GADL.Native后,在项目文件下会有一个GdalConfiguration.cs文件
在这里插入图片描述
打开,将配置文件代码替换成以下代码,

using System;
using System.IO;
using System.Reflection;
using Gdal = OSGeo.GDAL.Gdal;
using Ogr = OSGeo.OGR.Ogr;

namespace ConsoleApp7
{
   
   
    public static partial class GdalConfiguration
    {
   
   
        private static bool _configuredOgr;
        private static bool _configuredGdal;

        /// <summary>
        /// Function to determine which platform we're on
        /// </summary>
        private static string GetPlatform()
        {
   
   
            return IntPtr.Size == 4 ? "x86" : "x64";
        }

        /// <summary>
        /// Construction of Gdal/Ogr
        //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值