我有一个非常基本的、最基本的libusb示例,它编译,但是由以下应用程序生成的输出:
#include <stdio.h>
#include <stdlib.h>
#include <libusb-1.0/libusb.h>
int main(void) {
puts("Looking for USB devices...");
libusb_device **devices;
libusb_context *context = NULL;
ssize_t device_count = 0;
device_count = libusb_get_device_list(context, &devices);
if(device_count < 0) {
puts("Unable to retrieve USB device list!");
}
printf("%lu devices found\n", device_count);
return EXIT_SUCCESS;
}如下:
Looking for USB devices...
Segmentation fault: 11故障发生在第13行:
device_count = libusb_get_device_list(context, &devices);
我正在MacOSX10.9上运行上面的代码,并通过Homebrew安装了libusb版本1.0.9。
知道有什么问题吗?
发布于 2013-11-26 08:26:15
代码没有初始化context。
在libusb上的任何操作之前打电话给libusb_init()。
在libusb中发出任何其他调用之前添加如下一行:
int result = libusb_init(&context);
if (0 > result)
{
fprintf(stderr, "libusb_init() failed with %d.\n", result);
exit(EXIT_FAILURE);
}https://stackoverflow.com/questions/20211663
复制相似问题