Qt gdal Error: ‘Open’ is not a member of ‘OGRSFDriverRegistrar’
Qt gdal Error: ‘Open’ is not a member of ‘OGRSFDriverRegistrar’
我正在使用 gdal 库开发一个 Qt 项目。
Qt5.9.1。 Ubuntu 16.10 LTS。
我收到一个错误,我不知道出了什么问题。
#include <QCoreApplication>
#include <QFile>
#include "ogrsf_frmts.h"
int main(int argc, char *argv[])
{
OGRRegisterAll();
OGRDataSource *source;
source = OGRSFDriverRegistrar::Open( <path to s57 file>, FALSE );
if( source == NULL )
{
printf( "Open failed.\n" );
exit( 1 );
}
}
我收到以下错误:
main.cpp:11: error:
'Open' is not a member of 'OGRSFDriverRegistrar';
source = OGRSFDriverRegistrar::Open( <path to s57 chart file>, FALSE );
谁能帮我解决这个错误?
classOGRSFDriverRegistrar 被标记为旧版 class,因此已弃用。
此处引用的docs suggest using GDALDriverManager():
Use GDALDriverManager in your new code ! This class may be removed in
a later release.
您使用的是哪个版本的 GDAL?可能是 OGRSFDriverRegistrar 已被删除。
无论如何删除与否,我建议您应该尝试使用 GDALDriverManager 更新您的代码。
编辑:添加示例。
#include "gdal_priv.h"
#include "cpl_conv.h" // for CPLMalloc()
int main()
{
GDALDataset *poDataset;
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen( pszFilename, GA_ReadOnly );
if( poDataset == NULL )
{
...;
}
}
取自 GDAL API tutorial.
找到 OGR Tutorial。这些功能在这里用例子解释。最初的帮助是由@Petar 提供的。在进一步浏览该网站时,我找到了确切的工作方法。
GDALDataset *dataSet;
GDALAllRegister();
dataSet = (GDALDataset*)GDALOpenEx("ENCFILE.000",GDAL_OF_VECTOR,NULL,NULL,NULL);
if(dataSet == NULL)
{
printf( "Open failed.\n" );
exit( 1 );
}
else
{
printf( "SUCCESS.\n" );
}
我正在使用 gdal 库开发一个 Qt 项目。
Qt5.9.1。 Ubuntu 16.10 LTS。
我收到一个错误,我不知道出了什么问题。
#include <QCoreApplication>
#include <QFile>
#include "ogrsf_frmts.h"
int main(int argc, char *argv[])
{
OGRRegisterAll();
OGRDataSource *source;
source = OGRSFDriverRegistrar::Open( <path to s57 file>, FALSE );
if( source == NULL )
{
printf( "Open failed.\n" );
exit( 1 );
}
}
我收到以下错误:
main.cpp:11: error:
'Open' is not a member of 'OGRSFDriverRegistrar';
source = OGRSFDriverRegistrar::Open( <path to s57 chart file>, FALSE );
谁能帮我解决这个错误?
classOGRSFDriverRegistrar 被标记为旧版 class,因此已弃用。
此处引用的docs suggest using GDALDriverManager():
Use GDALDriverManager in your new code ! This class may be removed in a later release.
您使用的是哪个版本的 GDAL?可能是 OGRSFDriverRegistrar 已被删除。
无论如何删除与否,我建议您应该尝试使用 GDALDriverManager 更新您的代码。
编辑:添加示例。
#include "gdal_priv.h"
#include "cpl_conv.h" // for CPLMalloc()
int main()
{
GDALDataset *poDataset;
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen( pszFilename, GA_ReadOnly );
if( poDataset == NULL )
{
...;
}
}
取自 GDAL API tutorial.
找到 OGR Tutorial。这些功能在这里用例子解释。最初的帮助是由@Petar 提供的。在进一步浏览该网站时,我找到了确切的工作方法。
GDALDataset *dataSet;
GDALAllRegister();
dataSet = (GDALDataset*)GDALOpenEx("ENCFILE.000",GDAL_OF_VECTOR,NULL,NULL,NULL);
if(dataSet == NULL)
{
printf( "Open failed.\n" );
exit( 1 );
}
else
{
printf( "SUCCESS.\n" );
}