C++ 未定义对“OGRRegisterAll';

C++ 未定义对“OGRRegisterAll';,c++,c,ubuntu,gdal,ogr,C++,C,Ubuntu,Gdal,Ogr,我正试图编写一个gdal程序来读取形状文件,但我似乎无法通过注册驱动程序。这是代码,我不知道为什么头文件中的函数在包含源文件后仍然不可用 #include "/usr/include/gdal/ogrsf_frmts.h" int main() { GDALAllRegister(); } 如果运行以下命令:g++demo.cpp,则会出现以下错误: demo.cpp: In function int main(): demo.cpp:6:21: error: GDALAllRe

我正试图编写一个gdal程序来读取形状文件,但我似乎无法通过注册驱动程序。这是代码,我不知道为什么头文件中的函数在包含源文件后仍然不可用

#include "/usr/include/gdal/ogrsf_frmts.h"
int main()    
{
   GDALAllRegister();
}
如果运行以下命令:
g++demo.cpp
,则会出现以下错误:

demo.cpp: In function int main():
demo.cpp:6:21: error: GDALAllRegister was not declared in this scope
 GDALAllRegister();
                 ^
如果我尝试c版本,我会得到以下结果:

#include "/usr/include/gdal/ogr_api.h"
int main()
{
    OGRRegisterAll();
    return 0;
}

gcc create.c

/tmp/cc3YB8sO.o: In function main:
create.c:(.text+0x11): undefined reference to OGRRegisterAll
collect2: error: ld returned 1 exit status
更新 我使用的是Ubuntu 15.04 64位 我使用apt安装了所有软件包:

sudo apt-get install gdal-bin libgdal-dev build-essential

我还添加了ubuntugis ppa,并安装了qgis 2.10,它来自qgis repo,而不是ubuntugis ppa。

谢谢大家的帮助,问题是链接器无法找到gdal库。 我这样做是为了C代码

gcc create.c -lgdal

你在用什么操作系统?您是否安装了GDAL/OGR的库?如果是这样的话-怎么做?我想你需要给链接器标记这个标记的python是什么?尝试链接的共享库很可能不在你的路径中,所以它无法链接到必要的共享库。尝试将共享库复制到类路径中的某个位置或使用完整路径引用它们。谢谢,问题是链接器无法找到gdal库。我创建了这个gcc.c-lgdal。