Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Build error. Unresolved external symbol



  • This is what is output of the error

    moc_widget.obj:-1: error: LNK2019: unresolved external symbol "private: void __cdecl Widget::setValue(int)" (?setValue@Widget@@AEAAXH@Z) referenced in function "private: static void __cdecl Widget::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@Widget@@CAXPEAVQObject@@W4Call@QMetaObject@@HPEAPEAX@Z)
    

    I am trying to implement some custom slots and signals for my gui.

    This is how my header looks like

    QT_BEGIN_NAMESPACE
    namespace Ui { class Widget; }
    QT_END_NAMESPACE
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        Widget(QWidget *parent = nullptr);
        ~Widget();
    
    private slots:
        void on_pushButton_clicked();
        void setValue(int value);
    
    signals:
        void valueChanged(int newValue);
    
    
    private:
        Ui::Widget *ui;
    
        void init_gui();
        int normalize(int iterations, int curriternum);
        int m_value;
    
    };
    #endif // WIDGET_H
    

    If i remove setValue from private slot it is building properly but if i include that its not build ing.

    My pro file

    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    #ONFIG += c++11
    
    # You can make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    
    INCLUDEPATH += ..\dependencies\eigen\include\eigen3\Eigen
    
    LIBS += -lwsock32
    LIBS += -lws2_32
    LIBS +=  -lkernel32 -lkernel32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32
    
    SOURCES += \
        main.cpp \
        widget.cpp
    
    HEADERS += \
        widget.h
    
    FORMS += \
        widget.ui
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    

    As per some posts in stack and qt forum few suggested to run qmake and i did that. When building the error still remains?



  • @aravmadd
    You have declared a private slot setValue() but do not seem to have actually defined the method, hence the link error?


Log in to reply