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

Building Qt for Android with examples fails with missing QObject:connect() overload

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P1: Critical
    • 6.7.1, 6.8.0 FF
    • 6.7.0, 6.8
    • Examples and Demos
    • None
    • macOS
    • f54953a0a (dev), 913bd8d19 (6.7), 0b637d20b (6.6)

    Description

       

      Building without -make example works fine, but when building the examples corelib/platform/androidnotifier turns out to be troublesome. Tried with dev and 6.7.0.

      FAILED: qtbase/examples/corelib/platform/androidnotifier/CMakeFiles/androidnotifier.dir/main.cpp.o 
      /Users/ollivuolteenaho/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/ollivuolteenaho/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_CONTEXTLESS_CONNECT -DQT_WIDGETS_LIB -Dandroidnotifier_EXPORTS -I/Users/ollivuolteenaho/dev/qt670/qt5-build-android/qtbase/examples/corelib/platform/androidnotifier/androidnotifier_autogen/include -I/Users/ollivuolteenaho/dev/qt670/qt5-build-android/qtbase/include -I/Users/ollivuolteenaho/dev/qt670/qt5-build-android/qtbase/include/QtCore -I/Users/ollivuolteenaho/dev/qt670/qt5/qtbase/mkspecs/android-clang -I/Users/ollivuolteenaho/dev/qt670/qt5-build-android/qtbase/src/corelib -I/Users/ollivuolteenaho/dev/qt670/qt5-build-android/qtbase/include/QtCore/6.8.0 -I/Users/ollivuolteenaho/dev/qt670/qt5-build-android/qtbase/include/QtCore/6.8.0/QtCore -I/Users/ollivuolteenaho/dev/qt670/qt5-build-android/qtbase/include/QtWidgets -I/Users/ollivuolteenaho/dev/qt670/qt5-build-android/qtbase/include/QtGui -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DNDEBUG -Oz -std=gnu++17 -fPIC -fvisibility=default -Wall -Wextra -pthread -MD -MT qtbase/examples/corelib/platform/androidnotifier/CMakeFiles/androidnotifier.dir/main.cpp.o -MF qtbase/examples/corelib/platform/androidnotifier/CMakeFiles/androidnotifier.dir/main.cpp.o.d -o qtbase/examples/corelib/platform/androidnotifier/CMakeFiles/androidnotifier.dir/main.cpp.o -c /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/examples/corelib/platform/androidnotifier/main.cpp
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/examples/corelib/platform/androidnotifier/main.cpp:44:5: error: no matching function for call to 'connect'
          QObject::connect(&happyButton, &QPushButton::clicked, []() {
          ^~~~~~~~~~~~~~~~
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/src/corelib/kernel/qobject.h:397:41: note: candidate function not viable: no known conversion from 'void (QAbstractButton::*)(bool)' to 'const char *' for 2nd argument
      inline QMetaObject::Connection QObject::connect(const QObject *asender, const char *asignal,
                                              ^
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/src/corelib/kernel/qobject.h:201:36: note: candidate function not viable: requires at least 4 arguments, but 3 were provided
          static QMetaObject::Connection connect(const QObject *sender, const char *signal,
                                         ^
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/src/corelib/kernel/qobject.h:204:36: note: candidate function not viable: requires at least 4 arguments, but 3 were provided
          static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,
                                         ^
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/src/corelib/kernel/qobject.h:222:9: note: candidate function template not viable: requires at least 4 arguments, but 3 were provided
              connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
              ^
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/examples/corelib/platform/androidnotifier/main.cpp:48:5: err
      or: no matching function for call to 'connect'
          QObject::connect(&sadButton, &QPushButton::clicked, []() {
          ^~~~~~~~~~~~~~~~
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/src/corelib/kernel/qobject.h:397:41: note: candidate function not viable: no known conversion from 'void (QAbstractButton::*)(bool)' to 'const char *' for 2nd argument
      inline QMetaObject::Connection QObject::connect(const QObject *asender, const char *asignal,
                                              ^
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/src/corelib/kernel/qobject.h:201:36: note: candidate function not viable: requires at least 4 arguments, but 3 were provided
          static QMetaObject::Connection connect(const QObject *sender, const char *signal,
                                         ^
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/src/corelib/kernel/qobject.h:204:36: note: candidate function not viable: requires at least 4 arguments, but 3 were provided
          static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,
                                         ^
      /Users/ollivuolteenaho/dev/qt670/qt5/qtbase/src/corelib/kernel/qobject.h:222:9: note: candidate function template not viable: requires at least 4 arguments, but 3 were provided
              connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
              ^
      2 errors generated.

      Strangely, installing Qt with the installer and building the example from there using QtC works fine.

      Minimal steps to reproduce (basically: build the host side, build the Android side with -make examples):

      git clone "https://codereview.qt-project.org/qt/qt5"
      cd qt5
      perl init-repository --module-subset=qtbase
      cd ..
      mkdir qt5-build-macos && cd qt5-build-macos
      ../qt5/configure -prefix ../qt5-install-macos
      ninja && ninja install
      cd ..
      mkdir qt5-build-android && cd qt5-build-android
      ./qt5/configure \
          -platform android-clang \
          -android-abis arm64-v8a \
          -qt-host-path ../qt5-install-macos \
          -android-ndk $ANDROID_NDK_ROOT \
          -android-sdk $ANDROID_SDK_ROOT \
          -prefix ../qt5-install-android \
          -make examples
      ninja

       

      Attachments

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

        Activity

          People

            axelspoerl Axel Spoerl
            olvuolte Olli Vuolteenaho
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There is 1 open Gerrit change