我正在编写一个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/

10-10 20:44