我正在编写一个libusb程序。它工作正常,我可以进行批量传输,控制传输等。现在,我想添加热插拔支持。根据libusb 1.0文档,Windows不提供热插拔支持。因此,以下代码段按预期返回false。
if(libusb_has_capability (LIBUSB_CAP_HAS_HOTPLUG))
{
hasHotPlugSupport = true;
status = libusb_hotplug_register_callback (context, LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED, LIBUSB_HOTPLUG_ENUMERATE , VENDOR_ID,
PRODUCT_ID, CLASS_ID, hotplugAttachCallback, this, &hotplugHandle[0]);
if (LIBUSB_SUCCESS != status)
{
hasHotPlugSupport = false;
}
status = libusb_hotplug_register_callback (context, LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT, LIBUSB_HOTPLUG_ENUMERATE , VENDOR_ID,
PRODUCT_ID, CLASS_ID, hotplugDetachCallback, this, &hotplugHandle[1]);
if (LIBUSB_SUCCESS != status)
{
hasHotPlugSupport = false;
}
future = QtConcurrent::run (this,&LibUsbDevice::eventThread);
}
因此,我想在Linux上测试对热插拔的支持,但是直到我注释掉热插拔功能后,该程序才能编译。我收到以下错误:
错误:未定义对“ libusb_hotplug_register_callback”的引用
最佳答案
这对我来说似乎是一个链接器问题。
这是因为“ register_callback”函数存在于头文件中,但在所引用的库中不存在...
关于c - 对libusb_hotplug_register_callback的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19605489/