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 での hotplug サポートをテストしたかったのですが、hotplug 関数をコメントアウトするまでプログラムはコンパイルされません。次のエラーが表示されます。

エラー: `libusb_hotplug_register_callback' への未定義の参照

4

1 に答える 1

0

これは私にはリンカーの問題のように見えます。

これは、ヘッダーファイルには「register_callback」関数が存在しますが、参照されるライブラリには存在しないためです...

于 2013-10-26T12:15:18.023 に答える