Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-106905

[REG 6.3.1->6.3.2] Windows: Bluetooth service discovery error "QMetaMethod::invoke: Unable to handle unregistered datatype 'std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>'"

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Not Evaluated
    • None
    • 6.3.2
    • None
    • Qt: Static build (downloaded binaries with Qt Maintenance tool)
      Kit: Desktop Qt 6.3.1/6.3.2 MSVC2019 64bit
      Compiler: Microsoft Visual C++ Compiler 17.2.32602.215 (amd64)
      OS: Windows 11 Home 10.0.22000
    • Windows

    Description

      This ecaxt same code in a simple main.cpp:

      #include <QCoreApplication>

      #include <QtBluetooth/QBluetoothServiceDiscoveryAgent>

      #include <QtBluetooth/QBluetoothLocalDevice>

      int main(int argc, char *argv[]) {

      QCoreApplication app(argc, argv);

      qDebug() << "QT runtime version: " << qVersion() << ", compile version: " << QT_VERSION_STR;

      QBluetoothServiceDiscoveryAgent *discoveryAgent = new QBluetoothServiceDiscoveryAgent();

      QObject::connect(discoveryAgent, &QBluetoothServiceDiscoveryAgent::serviceDiscovered, [](const QBluetoothServiceInfo& serviceInfo) { qInfo() << "Found service: " << serviceInfo.serviceName() << " " << serviceInfo.serviceUuid(); });

      QObject::connect(discoveryAgent, &QBluetoothServiceDiscoveryAgent::errorOccurred, [](QBluetoothServiceDiscoveryAgent::Error error) { qWarning() << "Discovery agent error: " << error; });

      QObject::connect(discoveryAgent, &QBluetoothServiceDiscoveryAgent::finished, []() { qWarning() << "Discovery agent finished"; });

      qInfo() << "Starting bluetooth service discovery agent"; discoveryAgent->start(QBluetoothServiceDiscoveryAgent::FullDiscovery);

      return app.exec();

      }

      Gives the following output when using Qt 6.3.1:

      QT runtime version: 6.3.1 , compile version: 6.3.1
      Starting bluetooth service discovery agent
      Found service: "MAP MAS-iOS" "{00001132-0000-1000-8000-00805f9b34fb}"
      Found service: "Wireless iAP v2" "{02030302-1d19-415f-86f2-22a2106a0a77}"
      Found service: "Wireless iAP" "{00000000-deca-fade-deca-deafdecacafe}"
      Found service: "Phonebook" "{0000112f-0000-1000-8000-00805f9b34fb}"
      Found service: "Handsfree Gateway" "{0000111f-0000-1000-8000-00805f9b34fb}"
      Discovery agent finished

      But after switching to Qt 6.3.2 runtime, getting this output with errors:

      QT runtime version: 6.3.2 , compile version: 6.3.1
      Starting bluetooth service discovery agent
      QMetaMethod::invoke: Unable to handle unregistered datatype 'std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>'
      QMetaMethod::invoke: Unable to handle unregistered datatype 'std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>'
      QMetaMethod::invoke: Unable to handle unregistered datatype 'std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>'

      No devices are discovered and the "finished"-signal is not emitted.

      Same output also when it is both compiled and run with 6.3.2:

      QT runtime version: 6.3.2 , compile version: 6.3.2
      Starting bluetooth service discovery agent
      QMetaMethod::invoke: Unable to handle unregistered datatype 'std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>'
      QMetaMethod::invoke: Unable to handle unregistered datatype 'std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>'
      QMetaMethod::invoke: Unable to handle unregistered datatype 'std::shared_ptr<QWinRTBluetoothDeviceDiscoveryWorker>'

      However, runtime 6.3.1 compiled with 6.3.2 does work as expected again:

      QT runtime version: 6.3.1 , compile version: 6.3.2
      Starting bluetooth service discovery agent
      Found service: "MAP MAS-iOS" "{00001132-0000-1000-8000-00805f9b34fb}"
      Found service: "Wireless iAP v2" "{02030302-1d19-415f-86f2-22a2106a0a77}"
      Found service: "Wireless iAP" "{00000000-deca-fade-deca-deafdecacafe}"
      Found service: "Phonebook" "{0000112f-0000-1000-8000-00805f9b34fb}"
      Found service: "Handsfree Gateway" "{0000111f-0000-1000-8000-00805f9b34fb}"
      Discovery agent finished

      In conclusion, the Qt 6.3.2 runtime stops QBluetoothServiceDiscoveryAgent from working for me.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            ablasche Alex Blasche
            fabf98 Fabio Franke
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes