Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct

    Solved Qt 5.10.1, MinGW 7.2.0, Error: "undefined reference to ..." defined Qt signals

    General and Desktop
    1
    1
    596
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      drmhkelley last edited by

      Disclosure: I am not certain whether this question is a Qt question, MinGW linker question, or a MinGW library question.

      First, some background.

      I have some apps that I have successfully built on prior versions of Qt (5.9x, 5.10.0), using both the Qt Creator environment and using a recent MinGW (i686) compliler and linker. It is my understanding (but feel free to correct me) that both Qt Creator and the i686 MinGW compiler build 32-bit executables.

      However, I now have an app that ought to benefit from a 64-bit executable (large datasets requiring higher numeric precision). I presume that means I need the x86_64 complier from MinGW and a corresponding 64-bit build of Qt. I took this as motivation to install the most recent versions of Qt, MinGW, and various other libraries for numeric processing and such stuff. I have built and tested all of the various pieces required.

      Unfortunately, I am stuck when I try to incorporate a library of Qt widgets that I routinely use.

      For reasons driven by non-Qt parts of all this, I have found it beneficial generally to work outside of Qt Creator and use mingw32-make to build the apps.

      Now the present problem/symptom.

      A test app requires several Qt widgets, qtwidg-1.cpp, qtwidg-2.cpp, etc. I use two different methods to build the final app - one works, the other doesn't.

      Successful method: 1) moc.exe to build the required moc_qtwidg-1.cpp, moc_qtwidg2.cpp, etc. 2) Compile all .cpp files with g++. Use the g++ linker is used to pull everthing into app.exe. The resulting app works.

      However, since all of the qtwidg-x.cpp are used by many apps, I want to put them into a re-usable library, which leads to the other method.

      Unsuccessful method: 1) same as above. 2) same as above 3) create a library with the same .o files as above using ar.exe. 4) Tell the g++ linker to load that library. In the past, this method has worked - now it doesn't.

      The errors are of the form "undefined reference to `myQLE::escape(QWidget*)" where "escape" is a Qt signal defined in myqle.hpp. Each and every signal is marked as an undefined reference.

      Does anyone have a suggestion where to start looking for the underlying source of this behavior?

      1 Reply Last reply Reply Quote 0
      • First post
        Last post