我正在使用 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()'
我错过了什么?
最佳答案
问题是 libdvbv5/dvb-dev.h
没有提供合适的 C++
原型(prototype),而您将其包含在 .cpp 中
文件。
解决办法是这样做:
extern "C" {
#include "libdvbv5/dvb-dev.h"
}
... rest as before.
通过上述修复,您的程序将正常链接。
更详细的解释here .
关于c++ - 链接共享库 libdvbv5, undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53322164/