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

Qt5.9.1集成GDAL库报错:‘Open’不是OGRSFDriverRegistrar的成员

解决GDAL编译错误:'Open' is not a member of 'OGRSFDriverRegistrar'

你这是踩了GDAL版本API变更的坑啦!这个报错的核心原因是:你当前使用的GDAL版本(大概率是2.x及以上)里,OGRSFDriverRegistrar::Open这个静态方法已经被废弃或移除,取而代之的是更简洁易用的新API。

快速修复代码

直接把你原来的数据源打开逻辑替换成下面的写法即可:

#include <QCoreApplication>
#include <QFile>
#include <cstdlib>  // 确保exit函数能正常使用
#include "ogrsf_frmts.h"

int main(int argc, char *argv[]) {
    OGRRegisterAll();
    OGRDataSource *source;
    
    // 用OGROpen替代旧的OGRSFDriverRegistrar::Open
    source = OGROpen("<path to s57 file>", FALSE, NULL);
    
    if( source == NULL ) {
        printf( "Open failed.\n" );
        exit( 1 );
    }

    // 记得程序结束前释放数据源资源,避免内存泄漏
    OGRDataSource::DestroyDataSource(source);
    return 0;
}

额外注意事项

  1. 确认GDAL版本:在终端输入gdal-config --version就能查看系统安装的GDAL版本,2.x及以上版本都支持OGROpen。
  2. Qt项目配置:确保你的.pro文件正确链接了GDAL库,Ubuntu 16.10默认安装的话可以这么写:
    INCLUDEPATH += /usr/include/gdal
    LIBS += -L/usr/lib -lgdal
    
    路径可以根据实际安装位置调整。
  3. 进阶选择:如果需要设置打开数据源的额外参数(比如指定驱动、读写权限等),可以用功能更全的GDALOpenEx函数,需要额外包含gdal_utils.h头文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:39:00