gcc 对`i2c_smbus_read_word_data(int,unsigned char)的未定义引用

xyhw6mcr  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(185)

更新到Ubuntu 18.04后,我无法编译Qt应用程序。
出现以下错误:

undefined reference to `i2c_smbus_read_word_data(int, unsigned char)

字符串
据我所知,i2c_smbus_read_word_data现在不是在linux/i2c-dev. h中定义的,而是在动态库/usr/lib/x86_64-linux-gnu/libi2c.so中定义的。
我尝试动态链接:

-li2c


静态地:

/usr/lib/x86_64-linux-gnu/libi2c.a


但我还是有编译错误
UPD:安装了libi 2c-dev、libi 2c 0和i2c-tools包。

3pmvbmvn

3pmvbmvn1#

smbus include不是C++“ready”,因为大多数通用的C头文件都是,所以它没有extern "C"声明,这意味着C++编译器会破坏名称,链接失败。
在我有一个偶然的发现之前,我对这个问题进行了几个小时的研究,我通过将包含内容 Package 在一个extern "C"块中来修复它,现在我的程序再次链接。

extern "C" {
    #include <linux/i2c-dev.h>
    #include <i2c/smbus.h>
}

字符串

相关问题