我正在使用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”感到满意,并且该文件可以编译但在链接上失败
我已停止使用eclipse构建器,因此我可以简化构建命令并查明正在发生的事情。
我尝试使用以下命令进行编译和链接:
g++ sat_test.cpp -ldvbv5
但是它失败了:
sat_test.cpp:(.text+0x1f): undefined reference to `dvb_dev_alloc()'
我想念什么?
答案 0 :(得分:1)
问题在于libdvbv5/dvb-dev.h
没有提供正确的C++
原型,您将其包含在.cpp
文件中。
解决方法是这样做:
extern "C" {
#include "libdvbv5/dvb-dev.h"
}
... rest as before.
使用上述修复程序,您的程序将正常链接。
更详细的说明here。