Undefined reference to qDebug



  • Hi,

    I want to use test a QT Desktop GUI application project using CppUnit Framework.
    When I included the CppUnit Library path and the headers in the .pro file of the QT Project and build the project I am getting compiler error messages as "undefined reference to qDebug" . For example like this :
    /cmUdp.cpp:72: error: undefined reference to `QDebug::~QDebug()'.
    I included the Qdebug header in the source file,(#include <QDebug>) but still showing the error.

    Please help me to know what may be the probable cause of this error and what is the possible solution.

    Thanks in advance
    Ayush


  • Moderators

    Did you add
    QT += core
    to your pro file as stated in the documentation?



  • @jsulm

    Yes its already there in the .pro file.


  • Moderators

    Was it working before adding CppUnit Library?
    If so, can you post your pro file?



  • @ayush_mistral have you tried to:

    • Clean the project and
    • Run QMake and
    • Rebuild the project

    in this order?



  • Yes it was building before adding the cppunit library and header in the .pro file.

    Please find my .pro file as below.

    Thanks
    Ayush

    #-------------------------------------------------

    Project created by QtCreator 2016-01-22T17:45:53

    #-------------------------------------------------

    QT += core gui
    QT += network

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    TARGET = cppunittest_gui
    TEMPLATE = app

    SOURCES += main.cpp
    mainwindow.cpp
    cmTcp.cpp
    cmUdp.cpp
    CommunicationModule.cpp
    CommunicationModuleTest.cpp
    CmTcpTest.cpp
    CmUdpTest.cpp

    HEADERS += mainwindow.h
    cmCommon.h
    cmTcp.h
    cmUdp.h
    CommunicationModule.h
    CommunicationModuleTest.h
    CmTcpTest.h
    CmUdpTest.h
    testconfig.h

    mistTypes.h
    

    FORMS += mainwindow.ui

    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../usr/lib/release/ -lgtest
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../usr/lib/debug/ -lgtest
    else:unix: LIBS += -L$$PWD/../../../../../usr/lib/ -lgtest

    INCLUDEPATH += $$PWD/../../../../../usr/include/gtest
    DEPENDPATH += $$PWD/../../../../../usr/include/gtest

    win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/release/libgtest.a
    else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/debug/libgtest.a
    else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/release/gtest.lib
    else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/debug/gtest.lib
    else:unix: PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/libgtest.a

    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../usr/lib/x86_64-linux-gnu/release/ -lcppunit
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../usr/lib/x86_64-linux-gnu/debug/ -lcppunit
    else:unix: LIBS += -L$$PWD/../../../../../usr/lib/x86_64-linux-gnu/ -lcppunit

    INCLUDEPATH += $$PWD/../../../../../usr/include/cppunit
    DEPENDPATH += $$PWD/../../../../../usr/include/cppunit

    win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/x86_64-linux-gnu/release/libcppunit.a
    else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/x86_64-linux-gnu/debug/libcppunit.a
    else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/x86_64-linux-gnu/release/cppunit.lib
    else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/x86_64-linux-gnu/debug/cppunit.lib
    else:unix: PRE_TARGETDEPS += $$PWD/../../../../../usr/lib/x86_64-linux-gnu/libcppunit.a



  • How did you use qDebug()? Can you post an example?



  • @ttuna I used qdebug() for printing debug messages like below mentioned example

    qDebug() << "Socket Bounded";

    Ayush


  • Lifetime Qt Champion

    Hi,

    Maybe a silly question but did you #include <QtDebug> in your cpp file ?


  • Qt Champions 2016

    @ayush_mistral
    Hello,
    Do you mind putting the whole compilation window content somewhere for us to see (it may be long so perhaps uploading it to a site and linking it here is a good idea)?
    In the meantime, could you try linking the CppUnit Framework dynamically and let us know how it goes?

    Kind regards.



  • @SGaist

    Hi,

    I did #include <QtDebug> in my .cpp file but still its showing the same error as
    /QT Projects/cppunittest_gui/cmUdp.cpp:73: error: undefined reference to `QDebug::~QDebug()'

    Thanks and Regards
    Ayush



  • @kshegunov

    Hi,

    I tried to link the cppunit library dynamically but still getting the same error as follows

    cmUdp.o: In function cCmUdp::cmUdpSocketInit(CM_UDPSOCKET_HANDLE*, HA_UDP_PARAM*)': /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:73: undefined reference toQDebug::~QDebug()'
    /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:73: undefined reference to QDebug::~QDebug()' cmUdp.o: In functioncCmUdp::cmUdpSocketRead(CM_UDPSOCKET_HANDLE*, char*, unsigned int)':
    /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:128: undefined reference to QDebug::~QDebug()' /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:128: undefined reference toQDebug::~QDebug()'
    cmUdp.o: In function cCmUdp::cmUdpSocketClose(CM_UDPSOCKET_HANDLE*)': /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:279: undefined reference toQDebug::~QDebug()'
    cmUdp.o:/home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:279: more undefined references to `QDebug::~QDebug()' follow
    collect2: error: ld returned 1 exit status
    make: *** [cppunittest_gui] Error 1
    11:03:37: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project cppunittest_gui (kit: Desktop Qt 5.5.1 GCC 64bit)
    When executing step "Make"
    11:03:37: Elapsed time: 00:16.

    When I include the cppunit as a static library I am getting the output as follows

    cmUdp.o: In function cCmUdp::cmUdpSocketInit(CM_UDPSOCKET_HANDLE*, HA_UDP_PARAM*)': /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:73: undefined reference toQDebug::~QDebug()'
    /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:73: undefined reference to QDebug::~QDebug()' cmUdp.o: In functioncCmUdp::cmUdpSocketRead(CM_UDPSOCKET_HANDLE*, char*, unsigned int)':
    /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:128: undefined reference to QDebug::~QDebug()' /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:128: undefined reference toQDebug::~QDebug()'
    cmUdp.o: In function cCmUdp::cmUdpSocketClose(CM_UDPSOCKET_HANDLE*)': /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:279: undefined reference toQDebug::~QDebug()'
    cmUdp.o:/home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:279: more undefined references to `QDebug::~QDebug()' follow
    collect2: error: ld returned 1 exit status
    make: *** [cppunittest_gui] Error 1
    11:06:25: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project cppunittest_gui (kit: Desktop Qt 5.5.1 GCC 64bit)
    When executing step "Make"
    11:06:25: Elapsed time: 00:16.

    Thanks and Regards
    Ayush


  • Lifetime Qt Champion

    The linking information is missing. That's needed in order to see whether the correct version of Qt is linked to your application.



  • I'm still at beginner's crawling stage ..
    but I do spot a space in your path .. /QT Projects/
    I've learned to purge all spaces in my projects under development .. e.g. /Qt_Projects/
    May not be relevant to your problem but worth remembering.


  • Qt Champions 2016

    @ayush_mistral
    Hello,
    Getting the same error would mean that your problem shouldn't be related to the library itself, however I second @SGaist's note, you've not provided the linking step, only the errors. I'd suggest finding where the linker runs and allow for us to see what's done at that particular point.

    Kind regards.



  • @kshegunov

    Hi,

    Regarding the version , I am using version 5.5.1 of Qt and cpp unit version is 1.12.1
    Regarding the linking step please find the complete compiler output as mentioned below.

    11:16:28: Running steps for project cppunittest_gui...
    11:16:28: Starting: "/usr/bin/make" clean
    rm -f moc_mainwindow.cpp moc_cmTcp.cpp moc_cmUdp.cpp moc_simserver.cpp
    rm -f ui_mainwindow.h
    rm -f main.o mainwindow.o cmTcp.o cmUdp.o CommunicationModule.o CommunicationModuleTest.o CmTcpTest.o CmUdpTest.o simserver.o moc_mainwindow.o moc_cmTcp.o moc_cmUdp.o moc_simserver.o
    rm -f ~ core .core
    11:16:28: The process "/usr/bin/make" exited normally.
    11:16:28: Configuration unchanged, skipping qmake step.
    11:16:28: Starting: "/usr/bin/make"
    /home/mistral/Qt/5.5/gcc_64/bin/uic mainwindow.ui -o ui_mainwindow.h
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o main.o main.cpp
    main.cpp: In function 'int main(int, char
    )':
    main.cpp:18:20: warning: ignoring return value of 'int testing::UnitTest::Run()', declared with attribute warn_unused_result [-Wunused-result]
    RUN_ALL_TESTS();
    ^
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o mainwindow.o mainwindow.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o cmTcp.o cmTcp.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o cmUdp.o cmUdp.cpp
    cmUdp.cpp: In member function 'CM_EN_RETURN cCmUdp::cmUdpSocketWrite(CM_UDPSOCKET_HANDLE*, SINT8*, quint32)':
    cmUdp.cpp:195:12: warning: variable 's32BytesRead' set but not used [-Wunused-but-set-variable]
    qint32 s32BytesRead;
    ^
    cmUdp.cpp:219:60: warning: 'ps8RecvBuffer' may be used uninitialized in this function [-Wmaybe-uninitialized]
    &clientPort);
    ^
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o CommunicationModule.o CommunicationModule.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o CommunicationModuleTest.o CommunicationModuleTest.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o CmTcpTest.o CmTcpTest.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o CmUdpTest.o CmUdpTest.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o simserver.o simserver.cpp
    /home/mistral/Qt/5.5/gcc_64/bin/moc -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/home/mistral/Qt/5.5/gcc_64/mkspecs/linux-g++ -I'/home/mistral/Desktop/QT Projects/cppunittest_gui' -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I/home/mistral/Qt/5.5/gcc_64/include -I/home/mistral/Qt/5.5/gcc_64/include/QtWidgets -I/home/mistral/Qt/5.5/gcc_64/include/QtGui -I/home/mistral/Qt/5.5/gcc_64/include/QtNetwork -I/home/mistral/Qt/5.5/gcc_64/include/QtCore mainwindow.h -o moc_mainwindow.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o moc_mainwindow.o moc_mainwindow.cpp
    /home/mistral/Qt/5.5/gcc_64/bin/moc -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/home/mistral/Qt/5.5/gcc_64/mkspecs/linux-g++ -I'/home/mistral/Desktop/QT Projects/cppunittest_gui' -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I/home/mistral/Qt/5.5/gcc_64/include -I/home/mistral/Qt/5.5/gcc_64/include/QtWidgets -I/home/mistral/Qt/5.5/gcc_64/include/QtGui -I/home/mistral/Qt/5.5/gcc_64/include/QtNetwork -I/home/mistral/Qt/5.5/gcc_64/include/QtCore cmTcp.h -o moc_cmTcp.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o moc_cmTcp.o moc_cmTcp.cpp
    /home/mistral/Qt/5.5/gcc_64/bin/moc -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/home/mistral/Qt/5.5/gcc_64/mkspecs/linux-g++ -I'/home/mistral/Desktop/QT Projects/cppunittest_gui' -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I/home/mistral/Qt/5.5/gcc_64/include -I/home/mistral/Qt/5.5/gcc_64/include/QtWidgets -I/home/mistral/Qt/5.5/gcc_64/include/QtGui -I/home/mistral/Qt/5.5/gcc_64/include/QtNetwork -I/home/mistral/Qt/5.5/gcc_64/include/QtCore cmUdp.h -o moc_cmUdp.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o moc_cmUdp.o moc_cmUdp.cpp
    /home/mistral/Qt/5.5/gcc_64/bin/moc -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/home/mistral/Qt/5.5/gcc_64/mkspecs/linux-g++ -I'/home/mistral/Desktop/QT Projects/cppunittest_gui' -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I/home/mistral/Qt/5.5/gcc_64/include -I/home/mistral/Qt/5.5/gcc_64/include/QtWidgets -I/home/mistral/Qt/5.5/gcc_64/include/QtGui -I/home/mistral/Qt/5.5/gcc_64/include/QtNetwork -I/home/mistral/Qt/5.5/gcc_64/include/QtCore simserver.h -o moc_simserver.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/include/gtest -I/usr/include/cppunit -I/usr/include/cppunit -I../../../Qt/5.5/gcc_64/include -I../../../Qt/5.5/gcc_64/include/QtWidgets -I../../../Qt/5.5/gcc_64/include/QtGui -I../../../Qt/5.5/gcc_64/include/QtNetwork -I../../../Qt/5.5/gcc_64/include/QtCore -I. -I. -I../../../Qt/5.5/gcc_64/mkspecs/linux-g++ -o moc_simserver.o moc_simserver.cpp
    g++ -Wl,-rpath,/home/mistral/Qt/5.5/gcc_64 -Wl,-rpath,/home/mistral/Qt/5.5/gcc_64/lib -o cppunittest_gui main.o mainwindow.o cmTcp.o cmUdp.o CommunicationModule.o CommunicationModuleTest.o CmTcpTest.o CmUdpTest.o simserver.o moc_mainwindow.o moc_cmTcp.o moc_cmUdp.o moc_simserver.o -L/home/mistral/Desktop/QT\ Projects/cppunittest_gui/../../../../../usr/lib/ -lgtest -L/home/mistral/Desktop/QT\ Projects/cppunittest_gui/../../../../../usr/lib/x86_64-linux-gnu/ -lcppunit -L/home/mistral/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/X11R6/lib64 -L/usr/lib/x86_64-linux-gnu -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread
    cmUdp.o: In function cCmUdp::cmUdpSocketInit(CM_UDPSOCKET_HANDLE*, HA_UDP_PARAM*)': /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:73: undefined reference toQDebug::~QDebug()'
    /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:73: undefined reference to QDebug::~QDebug()' cmUdp.o: In functioncCmUdp::cmUdpSocketRead(CM_UDPSOCKET_HANDLE*, char*, unsigned int)':
    /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:128: undefined reference to QDebug::~QDebug()' /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:128: undefined reference toQDebug::~QDebug()'
    cmUdp.o: In function cCmUdp::cmUdpSocketClose(CM_UDPSOCKET_HANDLE*)': /home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:279: undefined reference toQDebug::~QDebug()'
    cmUdp.o:/home/mistral/Desktop/QT Projects/cppunittest_gui/cmUdp.cpp:279: more undefined references to `QDebug::~QDebug()' follow
    collect2: error: ld returned 1 exit status
    make: *** [cppunittest_gui] Error 1
    11:16:45: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project cppunittest_gui (kit: Desktop Qt 5.5.1 GCC 64bit)
    When executing step "Make"
    11:16:45: Elapsed time: 00:16.

    Thanks
    Ayush


  • Qt Champions 2016

    @ayush_mistral
    At a first glance it looks okay, maybe @SGaist will spot something suspicious, I don't see anything out of the ordinary. What do you have here cmUdp.cpp:73 in your source (+- a couple of lines)? In principle the linker shouldn't be complaining about the destructor. Where does your Qt come from, have you built it yourself or you've installed it from the Qt site? Are you sure the compiler/linker used for building Qt matches the one you're using (although it seem you are)?

    Kind regards.



  • @kshegunov

    Hi,

    I download the QT version for linux from the Qt website only and for compiling and building my application I am using Qt creator IDE.

    Thanks and Regards
    Ayush


  • Lifetime Qt Champion

    Did you also installed Qt from your distribution ?



  • @kshegunov you are linking with wrong libraries. You might have installed Qt from your package manager. So its linking with your program since linker is finding that before the actual libraries. If you are using Qt Creator go to projects tab and chanch path variable. Or uninstall Qt installed using your package manager



  • @SGaist just saw your post. I am thinking the same



  • @eureka

    Thanks for observing I will definitely take care of this in future.

    Regards
    Ayush



  • @SGaist

    I am not getting clearly. I download my qt set up from qt website and use the same script for installation.

    Thanks and Regards
    Ayush



  • @asanka424

    Hi,

    I didn't install QT from package manager but ran the executable from the set up which I obtained/downloaded from the QT website.

    Secondly I am also using Google test framework for testing my project but that is not causing any problem.
    I want to know why including cpp unit library and headers in the .pro file is causing the linking error?



  • Could you check if you have libQt5*.so in any other place than /home/mistral/Qt/5.5/gcc_64/lib


  • Qt Champions 2016

    This thread got really confusing.

    @asanka424
    I'm not linking anything, it's in fact Ayush who's having trouble.

    @ayush_mistral
    Make sure you're running the qmake that came with the package you installed, and not a system-wide installed one. That's what's @SGaist was implying with his question, however it seems you do indeed. /home/mistral/Qt/5.5/gcc_64/bin/uic this looks exactly as I'd expect. I don't think your problem is related to the cpp unit library as I mentioned before. Besides running qmake again to recreate the project I'm running out of ideas ...

    Kind regards.



  • @asanka424

    Hi,

    There are some common libQt5*.so files also present in the path /usr/lib/x86_64-linux-gnu

    Thanks and Regards
    Ayush


  • Qt Champions 2016

    @ayush_mistral
    Okay, then this: "Make sure you're running the qmake that came with the package you installed, and not a system-wide installed one." is quite relevant.
    Use the qmake that came with the package you installed. You can find it somewhere in the /home/mistral/Qt/.../bin folder. You go to your project, run make clean, then use the correct qmake to create the Makefile anew, and then you make your project again.

    Kind regards.



  • @kshegunov

    Hi I found the qmake executable in the path Qt5.5/gcc_64/bin folder

    Can you please tell me which tab should I change in qt projects tab to provide the path for the appropriate qmake?


  • Qt Champions 2016

    @ayush_mistral
    Actually you set up a kit for QtCreator and then change the kit for your project. To make your kit work with the Qt you've downloaded just specify the correct qmake executable and a name that you'd recognize.
    The kit your project uses is on the projects page, up-most, just below the name of the project. You have the kit name there and under it two buttons - build and run. Pointing at the kit name ("Qt 5.6 64 bit" in my case) will cause a down arrow to show next to the text. Clicking the arrow there's a context menu that has Change kit on it, and you just select the one you like. After changing the kit, do a full rebuild of your project.

    Kind regards.



  • @kshegunov

    Hi,

    I have the following settings in the newly created kit

    Name- cppunit_qt
    Device type - desktop
    Device - Local PC
    Compiler - GCC (x86 64bit in /usr/bin)
    Debugger - System GDB at /usr/bin/gdb

    Try to make clean and rebuild the project still the error is the same
    Can you please tell me if I am missing something or doing something wrong?

    Thanks and Regards
    Ayush
    Qt Version - Qt5.5.1GCC 64bit


  • Moderators

    @ayush_mistral Which Qt version did you set in that kit?



  • @jsulm

    I set 5.5.1


  • Qt Champions 2016

    @ayush_mistral
    But with which qmake that is? If you go to the "Manage kits" page and look at the "Qt versions" tab you see that there's a qmake location column. You'd want to have the version you use to match the qmake you have in the manually installed directory. I have the following table:

    Auto-detected
        Qt 5.5.1 in PATH (System)         /usr/bin/qmake
    Manual
        Qt 5.6.0 (qt5)                    /home/nye/Programming/C++/qt/qt-5.6/qtbase/bin/qmake
        Qt 5.7.0 (qt-dev)                 /home/nye/Programming/C++/qt/qt-dev/qtbase/bin/qmake
    

    Any of those can be used to make a kit, however in your case you need to make sure to use the one you installed from the SDK package.

    Kind regards.



  • @kshegunov sorry I was replyin from my phone and seems like reply gone to you.



  • @kshegunov

    Hi,

    In the QT versions tab of my newly created kit the path for the qmake is the same in the manually installed directory (/mistral/QT/5.5/gcc_64/bin/qmake). I also tried to change the qmake and added in the QT version present in path /usr/bin/qmake but still the error is same

    Thanks and Regards
    Ayush


  • Qt Champions 2016

    @ayush_mistral
    Hello,

    In the QT versions tab of my newly created kit the path for the qmake is the same in the manually installed directory (/mistral/QT/5.5/gcc_64/bin/qmake)

    This should be okay. I honestly am out of ideas ...

    Kind regards.



  • Spotting your earlier post ...

    "There are some common libQt5.so files also present in the path /usr/lib/x86_64-linux-gnu"

    Since all ideas are exhausted I will venture a suggestion (as a beginner). A fresh installation.

    ...

    When I migrated from Qt4 to Qt 5.5.1 I got myself in quite a stew with conflicts with legacy Qt libraries. So I decided to start afresh.

    I purged all old versions of Qt 4 and Qt 5.
    I purged remaining libraries in /usr/lib/x86_64-linux-gnu (actually mine were in x86_32-linux-gnu)
    I installed Qt 5.5.1 using workflow here ...

    https://launchpad.net/~beineri/+archive/ubuntu/opt-qt551-trusty

    and followed some other threads

    http://askubuntu.com/questions/279421/how-can-i-install-qt-5-x-on-12-04-lts

    ftp://ftp.oregonstate.edu/.2/lfs-website/blfs/view/svn/x/qt5.html

    I ran command .. qmake --version

    (see options by running command .. man qmake)

    QMake version 3.0
    Using Qt version 5.5.1 in /opt/qt55/lib

    qtchooser -print-env
    QT_SELECT="default"
    QTTOOLDIR="/opt/qt55/bin"
    QTLIBDIR="/opt/qt55/li"

    I edited ~/.profile as follows (two lines)

    export QT5PREFIX="/opt/qt55"
    export LD_LIBRARY_PATH="/opt/qt55/bin":${LD_LIBRARY_PATH}

    I checked and edited the paths in Qt Creator

    And I was then out of my conflicts mess.
    But this is just a hunch that you have conflicts as I did.
    I would put your Qt 5.5.1 installation in /opt/qt55


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.