对 'i2c_smbus_read_word_data(int, 无符号字符)的未定义引用
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中定义的。
我尝试动态链接:
-li2c
和静态:
/usr/lib/x86_64-linux-gnu/libi2c.a
但是我仍然有编译错误
上级: 安装了 Libi2C-dev、Libi2C0 和 I2C-Tools 软件包。
smbus include 不像大多数用于常规用途的 C 标头那样C++"就绪",因此它没有extern "C"
声明,这意味着C++编译器会破坏名称并且链接失败。
我愣了几个小时,才有了意外的洞察力。我通过将包含包装在extern "C"
块中来修复它,现在我的程序再次链接。
extern "C" {
#include <linux/i2c-dev.h>
#include <i2c/smbus.h>
}
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 从 std::vector<无符号字符>切片中提取 int?
- 将无符号字符的向量存储在数组中会给我 std::bad_alloc
- 使用 fopen 打开 .pak 文件并使该文件应用于 const 无符号字符* (C++)
- 库特无符号字符
- 寻找一种更好的方法来表示无符号字符数组
- C++ 无符号字符 *{varName};-> C#
- 如何返回/复制unique_ptr<无符号字符[]>的值?
- 将浮点数转换为无符号字符数组并打印出来
- 在函数中返回无符号字符数组,但不返回指针
- 如何在 C/C++ 中将无符号字符*转换为无符号字符数组?
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 无符号字符打印其 ASCII 值
- 字符数组到无符号字符 *
- 是否可以在 c++ 中将两位数保存在无符号字符中