【发布时间】:2017-06-27 20:38:26
【问题描述】:
我正在尝试使用已安装在树莓派上的 libmbus 制作 C 程序。在我的 /usr/lib 目录中,我有文件 libmbus.so,在我的 /usr/include 目录中,我有文件 ./mbus/mbus.h。
程序如下所示:
#include <stdio.h>
#include <mbus/mbus.h>
int main(void)
{
mbus_handle* MbusHandle;
MbusHandle = mbus_connect_serial("/dev/ttyS1");
return 0;
}
当我尝试运行“gcc main.cpp -lmbus”时,我得到:
main.cpp:(.text+0xe): undefined reference to `mbus_connect_serial(char const*)'
我试着跑了
nm -D /usr/lib/libmbus.so
其中有一个
00009930 T mbus_connect_serial
看来函数 mbus_connect_serial 是 libmbus.so 的一部分。
在头文件中函数 mbus_connect_serial 的定义如下:
mbus_handle * mbus_connect_serial(const char * device);
我似乎无法弄清楚出了什么问题。谁能指导我正确的方向?
【问题讨论】:
-
您的错误信息表明您的问题应该是关于
c++。此外,编译器不是抱怨的人。 -
你可以试试
extern "C" { #include <mbus/mbus.h> };。你能检查一下mbus.h是否包含一些extern "C"指令吗?如果不是,则意味着 C++ 编译器生成 C++ 原型(带参数)而不是 C 原型(不带参数) -
哦,这也可能是在 C++ 文件上调用
gcc的问题:尝试:g++ main.cpp -lmbus