对 `i2c_smbus_read_word_data(int, unsigned char) 的未定义引用
undefined reference to `i2c_smbus_read_word_data(int, unsigned char)
更新到 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.
中定义
我尝试 link 动态:
-li2c
静态:
/usr/lib/x86_64-linux-gnu/libi2c.a
但我仍然有编译错误
更新:
已安装 libi2c-dev、libi2c0 和 i2c-tools 包。
smbus include 不是 C++ "ready",因为大多数通用 C 头文件都是,所以它没有 extern "C"
声明,这意味着 C++ 编译器会破坏名称并且链接失败。
我为此苦苦思索了几个小时,才突然灵光一现。我通过将包含包含在 extern "C"
块中来修复它,现在我的程序再次链接。
extern "C" {
#include <linux/i2c-dev.h>
#include <i2c/smbus.h>
}
更新到 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.
中定义我尝试 link 动态:
-li2c
静态:
/usr/lib/x86_64-linux-gnu/libi2c.a
但我仍然有编译错误
更新: 已安装 libi2c-dev、libi2c0 和 i2c-tools 包。
smbus include 不是 C++ "ready",因为大多数通用 C 头文件都是,所以它没有 extern "C"
声明,这意味着 C++ 编译器会破坏名称并且链接失败。
我为此苦苦思索了几个小时,才突然灵光一现。我通过将包含包含在 extern "C"
块中来修复它,现在我的程序再次链接。
extern "C" {
#include <linux/i2c-dev.h>
#include <i2c/smbus.h>
}