C++ 链接共享库libdvbv5,未定义引用

C++ 链接共享库libdvbv5,未定义引用,c++,linker,shared-libraries,undefined-reference,C++,Linker,Shared Libraries,Undefined Reference,我正在使用libdvbv5库,但是在编译程序时遇到了问题 我在/usr/local/include中有头文件,在/usr/local/lib中有libdvbv5.so 代码非常简单: #include "libdvbv5/dvb-dev.h" void doSatTest() { struct dvb_device *dvb; struct dvb_dev_list *dvb_dev; dvb = dvb_dev_alloc(); } eclipse索引器确信头文件

我正在使用libdvbv5库,但是在编译程序时遇到了问题

我在/usr/local/include中有头文件,在/usr/local/lib中有libdvbv5.so

代码非常简单:

#include "libdvbv5/dvb-dev.h"

void doSatTest() {
    struct dvb_device *dvb;
    struct dvb_dev_list *dvb_dev;

    dvb = dvb_dev_alloc();
}
eclipse索引器确信头文件“dvb-dev.h”中存在函数“dvb_dev_alloc”,并且该文件已编译,但链接失败

我已经停止使用EclipseBuilder,以便简化build命令并查明发生了什么

我尝试使用以下命令编译和链接:

g++ sat_test.cpp -ldvbv5
但是,它在以下方面失败:

sat_test.cpp:(.text+0x1f): undefined reference to `dvb_dev_alloc()'

我缺少什么?

问题是
libdvbv5/dvb-dev.h
没有提供正确的
C++
原型,您正在将其包含到
.cpp
文件中

解决方法是这样做:

extern "C" {
#include "libdvbv5/dvb-dev.h"
}
... rest as before.
使用上述修复程序,您的程序将链接良好


更详细的解释。

这是你得到的唯一信息吗?在许多Linux系统上,
/usr/local
不是标准include或library搜索路径的一部分。是的,唯一的消息是:
/tmp/cc3BD0pW.o:In function“dosconstate()”:sat_test.cpp:(.text+0x1f):对“dvb_dev_alloc()”collect2的未定义引用:错误:ld返回1退出状态