链接共享库 libdvbv5,未定义的引用
Linking shared library libdvbv5, undefined reference
我正在使用 libdvbv5 库,但是我在编译我的程序时遇到了问题。
我在 /usr/local/include 中有 header,在 /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_alloc" 存在于 header 文件 "dvb-dev.h" 并且文件编译但在 link
上失败
我已经停止使用 eclipse 构建器,因此我可以简化构建命令并查明正在发生的事情。
我尝试使用以下命令编译和 link:
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.
通过上述修复,您的程序将 link 正常。
更详细的解释here。
我正在使用 libdvbv5 库,但是我在编译我的程序时遇到了问题。
我在 /usr/local/include 中有 header,在 /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_alloc" 存在于 header 文件 "dvb-dev.h" 并且文件编译但在 link
上失败我已经停止使用 eclipse 构建器,因此我可以简化构建命令并查明正在发生的事情。
我尝试使用以下命令编译和 link:
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.
通过上述修复,您的程序将 link 正常。
更详细的解释here。