0

我正在编写一个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”的引用

4

1 回答 1

0

这对我来说似乎是一个链接器问题。

这是因为“register_callback”函数存在于头文件中,但它不存在于引用的库中......

于 2013-10-26T12:15:18.023 回答