打印USB设备为架构提供了未定义的符号

ni65a41a  于 2022-10-23  发布在  Linux
关注(0)|答案(1)|浏览(156)

和我上一篇文章一样:Installing linux library in C在成功地为我的项目安装了库之后。我一直在遵循一些示例代码,但无法使其正常工作。
例如,我收到关于print语句的多个错误(已从注解修复)--如何成功打印出当前访问USB端口的设备?--它引发了一个未定义符号的问题?

int main(int argc, char *argv[]){
libusb_device**list;
libusb_device *found = NULL;
ssize_t cnt = libusb_get_device_list(NULL, &list);
ssize_t i = 0;
int err = 0;
if (cnt < 0)
    perror("Some Error");
    exit(1);

for (i = 0; i < cnt; i++) {
    libusb_device *device = list[i];
    if (device) {
        found = device;
        break;}}

if (found) {
    libusb_device_handle *handle;
    err = libusb_open(found, &handle);
    if (err)
        perror("Another Error");
        exit(1);
        }

libusb_free_device_list(list, 1);

return 0;
}

我收到的错误如下:

Undefined symbols for architecture x86_64:
  "_libusb_get_device_list", referenced from:
      _main in exercise_1-eebbd8.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
c7rzv4ha

c7rzv4ha1#

你的大问题是你没有正确地引用你的字符串。

perror('Some Error');

应该是

perror("Some Error");

在C中,单引号仅用于单个字符。字符串必须用双引号引起来。
看起来您的其他错误是因为您没有包括任何头文件,这些头文件提供了要使用的函数的声明。
至少你需要


# include <stdio.h>

但是您还需要其他库,比如任何需要的库都有libus函数的定义。

相关问题