提问人:uhsl_m 提问时间:11/15/2018 最后编辑:Cœuruhsl_m 更新时间:6/30/2019 访问量:292
链接共享库 libdvbv5,未定义的引用
Linking shared library libdvbv5, 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 索引器确信头文件“dvb-dev.h”中存在函数“dvb_dev_alloc”,并且该文件已编译但在链接时失败
我已经停止使用eclipse构建器,因此我可以简化构建命令并查明正在发生的事情。
我尝试使用以下命令进行编译和链接:
g++ sat_test.cpp -ldvbv5
但是,它失败了,并显示:
sat_test.cpp:(.text+0x1f): undefined reference to `dvb_dev_alloc()'
我错过了什么?
答:
1赞
Employed Russian
11/16/2018
#1
问题是 没有提供适当的原型,并且您将其包含在文件中。libdvbv5/dvb-dev.h
C++
.cpp
解决方法是这样做:
extern "C" {
#include "libdvbv5/dvb-dev.h"
}
... rest as before.
通过上述修复,您的程序将正常链接。
这里有更详细的解释。
评论
/usr/local
/tmp/cc3BD0pW.o: In function "doSatTest()": sat_test.cpp:(.text+0x1f): undefined reference to "dvb_dev_alloc()" collect2: error: ld returned 1 exit status