Skip to content

Fails to build with main.cpp:83:27: error: no matching function for call to 'createProxy' and subsequent errors (sbus-cpp 2.1.0, gcc 14.2.1). #1

@dreirund

Description

@dreirund

Ahoj,

I am trying to build release version 0.2.1 of cppbtl on Artix GNU/Linux (rolling release), using this recipe.

Build fails for me with main.cpp:83:27: error: no matching function for call to 'createProxy' and subsequent errors (full build output below).

My GCC version is 14.2.1, sdbus-cpp version is 2.1.0.

Build output of

cmake -DCMAKE_INSTALL_PREFIX=/usr
make -j1
-- The C compiler identification is Clang 18.1.8
-- The CXX compiler identification is Clang 18.1.8
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (0.5s)
-- Generating done (0.0s)
-- Build files have been written to: /var/cache/makepkg/build/cppbtbl/src/build
[ 25%] Building CXX object CMakeFiles/cppbtbl.dir/src/config.cpp.o
[ 50%] Building CXX object CMakeFiles/cppbtbl.dir/src/main.cpp.o
/var/cache/makepkg/build/cppbtbl/src/cppbtbl-0.2.1/src/main.cpp:83:27: error: no matching function for call to 'createProxy'
   83 |         auto device_obj = sdbus::createProxy(UPOWER_IFACE, device);
      |                           ^~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:936:50: note: candidate function not viable: no known conversion from 'const char[23]' to 'ServiceName' (aka 'sdbus::BusName') for 1st argument
  936 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( ServiceName destination
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:861:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  861 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( sdbus::IConnection& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  862 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  863 |                                                             , ObjectPath objectPath );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:887:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  887 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( std::unique_ptr<sdbus::IConnection>&& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  888 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  889 |                                                             , ObjectPath objectPath );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:957:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  957 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( ServiceName destination
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~
  958 |                                                             , ObjectPath objectPath
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
  959 |                                                             , dont_run_event_loop_thread_t );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:914:50: note: candidate function not viable: requires 4 arguments, but 2 were provided
  914 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( std::unique_ptr<sdbus::IConnection>&& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  915 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  916 |                                                             , ObjectPath objectPath
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
  917 |                                                             , dont_run_event_loop_thread_t );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/cache/makepkg/build/cppbtbl/src/cppbtbl-0.2.1/src/main.cpp:121:26: error: no matching function for call to 'createProxy'
  121 |     auto device_object = sdbus::createProxy(UPOWER_IFACE, path);
      |                          ^~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:936:50: note: candidate function not viable: no known conversion from 'const char[23]' to 'ServiceName' (aka 'sdbus::BusName') for 1st argument
  936 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( ServiceName destination
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:861:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  861 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( sdbus::IConnection& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  862 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  863 |                                                             , ObjectPath objectPath );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:887:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  887 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( std::unique_ptr<sdbus::IConnection>&& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  888 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  889 |                                                             , ObjectPath objectPath );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:957:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  957 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( ServiceName destination
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~
  958 |                                                             , ObjectPath objectPath
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
  959 |                                                             , dont_run_event_loop_thread_t );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:914:50: note: candidate function not viable: requires 4 arguments, but 2 were provided
  914 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( std::unique_ptr<sdbus::IConnection>&& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  915 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  916 |                                                             , ObjectPath objectPath
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
  917 |                                                             , dont_run_event_loop_thread_t );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/cache/makepkg/build/cppbtbl/src/cppbtbl-0.2.1/src/main.cpp:168:44: error: no matching function for call to 'createProxy'
  168 |     std::unique_ptr<sdbus::IProxy> proxy = sdbus::createProxy(UPOWER_IFACE, UPOWER_PATH);
      |                                            ^~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:936:50: note: candidate function not viable: no known conversion from 'const char[23]' to 'ServiceName' (aka 'sdbus::BusName') for 1st argument
  936 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( ServiceName destination
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:861:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  861 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( sdbus::IConnection& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  862 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  863 |                                                             , ObjectPath objectPath );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:887:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  887 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( std::unique_ptr<sdbus::IConnection>&& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  888 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  889 |                                                             , ObjectPath objectPath );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:957:50: note: candidate function not viable: requires 3 arguments, but 2 were provided
  957 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( ServiceName destination
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~
  958 |                                                             , ObjectPath objectPath
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
  959 |                                                             , dont_run_event_loop_thread_t );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:914:50: note: candidate function not viable: requires 4 arguments, but 2 were provided
  914 |     [[nodiscard]] std::unique_ptr<sdbus::IProxy> createProxy( std::unique_ptr<sdbus::IConnection>&& connection
      |                                                  ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  915 |                                                             , ServiceName destination
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~
  916 |                                                             , ObjectPath objectPath
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~
  917 |                                                             , dont_run_event_loop_thread_t );
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/cache/makepkg/build/cppbtbl/src/cppbtbl-0.2.1/src/main.cpp:169:39: error: 'createMethodCall' is a protected member of 'sdbus::IProxy'
  169 |     sdbus::MethodCall method = proxy->createMethodCall(UPOWER_IFACE, "EnumerateDevices");
      |                                ~~~~~~~^~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:655:42: note: declared protected here
  655 |         [[nodiscard]] virtual MethodCall createMethodCall(const char* interfaceName, const char* methodName) const = 0;
      |                                          ^
/var/cache/makepkg/build/cppbtbl/src/cppbtbl-0.2.1/src/main.cpp:186:12: error: no matching member function for call to 'registerSignalHandler'
  186 |     proxy->registerSignalHandler(UPOWER_IFACE, "DeviceAdded", &_device_added_signal);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:656:22: note: candidate function not viable: no known conversion from 'void (*)(sdbus::Signal &)' to 'signal_handler' (aka 'function<void (Signal)>') for 3rd argument
  656 |         virtual void registerSignalHandler( const char* interfaceName
      |                      ^
  657 |                                           , const char* signalName
  658 |                                           , signal_handler signalHandler ) = 0;
      |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:625:22: note: candidate function not viable: no known conversion from 'const char[23]' to 'const InterfaceName' for 1st argument
  625 |         virtual void registerSignalHandler( const InterfaceName& interfaceName
      |                      ^                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:645:36: note: candidate function not viable: requires 4 arguments, but 3 were provided
  645 |         [[nodiscard]] virtual Slot registerSignalHandler( const InterfaceName& interfaceName
      |                                    ^                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |                                                         , const SignalName& signalName
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  647 |                                                         , signal_handler signalHandler
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  648 |                                                         , return_slot_t ) = 0;
      |                                                         ~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:659:36: note: candidate function not viable: requires 4 arguments, but 3 were provided
  659 |         [[nodiscard]] virtual Slot registerSignalHandler( const char* interfaceName
      |                                    ^                      ~~~~~~~~~~~~~~~~~~~~~~~~~
  660 |                                                         , const char* signalName
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~
  661 |                                                         , signal_handler signalHandler
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  662 |                                                         , return_slot_t ) = 0;
      |                                                         ~~~~~~~~~~~~~~~
/var/cache/makepkg/build/cppbtbl/src/cppbtbl-0.2.1/src/main.cpp:187:12: error: no matching member function for call to 'registerSignalHandler'
  187 |     proxy->registerSignalHandler(UPOWER_IFACE, "DeviceRemoved", &_device_removed_signal);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:656:22: note: candidate function not viable: no known conversion from 'void (*)(sdbus::Signal &)' to 'signal_handler' (aka 'function<void (Signal)>') for 3rd argument
  656 |         virtual void registerSignalHandler( const char* interfaceName
      |                      ^
  657 |                                           , const char* signalName
  658 |                                           , signal_handler signalHandler ) = 0;
      |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:625:22: note: candidate function not viable: no known conversion from 'const char[23]' to 'const InterfaceName' for 1st argument
  625 |         virtual void registerSignalHandler( const InterfaceName& interfaceName
      |                      ^                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:645:36: note: candidate function not viable: requires 4 arguments, but 3 were provided
  645 |         [[nodiscard]] virtual Slot registerSignalHandler( const InterfaceName& interfaceName
      |                                    ^                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |                                                         , const SignalName& signalName
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  647 |                                                         , signal_handler signalHandler
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  648 |                                                         , return_slot_t ) = 0;
      |                                                         ~~~~~~~~~~~~~~~
/usr/include/sdbus-c++/IProxy.h:659:36: note: candidate function not viable: requires 4 arguments, but 3 were provided
  659 |         [[nodiscard]] virtual Slot registerSignalHandler( const char* interfaceName
      |                                    ^                      ~~~~~~~~~~~~~~~~~~~~~~~~~
  660 |                                                         , const char* signalName
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~
  661 |                                                         , signal_handler signalHandler
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  662 |                                                         , return_slot_t ) = 0;
      |                                                         ~~~~~~~~~~~~~~~
/var/cache/makepkg/build/cppbtbl/src/cppbtbl-0.2.1/src/main.cpp:188:12: error: no member named 'finishRegistration' in 'sdbus::IProxy'
  188 |     proxy->finishRegistration();
      |     ~~~~~~~^
7 errors generated.
make[2]: *** [CMakeFiles/cppbtbl.dir/build.make:93: CMakeFiles/cppbtbl.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:87: CMakeFiles/cppbtbl.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Regards!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions