Planned maintenance has been done but it did not solve the problem. So work will continue on this and a new time for trying updates will be announced asap.

FreeGlut: undefined reference In function `glutInit_ATEXIT_HACK':



  • Witam, ostatnio chciałem zrobić pewny mały projekt w QT lecz jak chce podpiec do niego freegluta to wyskakuje właśnie "undefined reference".

    //*.pro
    
    QT       += core gui opengl
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = test1
    TEMPLATE = app
    
    DEFINES += QT_DEPRECATED_WARNINGS
    
    SOURCES += \
            main.cpp \
            mainwindow.cpp \
        gl.cpp
    
    HEADERS += \
            mainwindow.h \
        gl.h
    
    FORMS += \
            mainwindow.ui
    LIBS   += -lopengl32
    LIBS   += -lglu32
    LIBS   += -lglut32
    LIBS   += -lfreeglut
    
    
    //gl.h
    
    #ifndef GL_H
    #define GL_H
    
    #include <QWidget>
    #include <QOpenGLWidget>
    #include <QOpenGLFunctions>
    class gl : public QOpenGLWidget
    {
    public:
        explicit gl(QWidget *parent);
    private:
        void initializeGL();
        void resizeGL(int w, int h);
        void paintGL();
    };
    
    #endif
    
    //gl.cpp
    
    #include "gl.h"
    #include <QtOpenGL>
    #include <QOpenGLFunctions>
    #include <QOpenGLWidget>
    #include <GL/freeglut.h>
    gl::gl(QWidget *parent) : QOpenGLWidget(parent)
    {
    
    }
    
    void gl::initializeGL(){
            glClearColor(0.2, 0.2, 0.2, 1);
    }
    
    void gl::resizeGL(int w, int h){
    
    }
    
    void gl::paintGL(){
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glutWireTeapot(0.6);
    }
    
    
    //main.cpp
    #include "mainwindow.h"
    #include <QApplication>
    #include <GL/freeglut.h>
    int main(int argc, char *argv[])
    {  
        QApplication a(argc, argv);
        glutInit(&argc, argv);
        MainWindow w;
        w.show();
    
        return a.exec();
    }
    
    
    //Błędy
    D:\Qt5.9.0\5.9\mingw53_32\include\GL\freeglut_std.h:637: błąd: undefined reference to `_imp____glutInitWithExit@12'
    D:\Qt5.9.0\5.9\mingw53_32\include\GL\freeglut_std.h:639: błąd: undefined reference to `_imp____glutCreateWindowWithExit@8'
    D:\Qt5.9.0\5.9\mingw53_32\include\GL\freeglut_std.h:641: błąd: undefined reference to `_imp____glutCreateMenuWithExit@8'
    D:\Qt5.9.0\5.9\mingw53_32\include\GL\freeglut_std.h:637: błąd: undefined reference to `_imp____glutInitWithExit@12'
    D:\Qt5.9.0\5.9\mingw53_32\include\GL\freeglut_std.h:639: błąd: undefined reference to `_imp____glutCreateWindowWithExit@8'
    D:\Qt5.9.0\5.9\mingw53_32\include\GL\freeglut_std.h:641: błąd: undefined reference to `_imp____glutCreateMenuWithExit@8'
    

  • Moderators

    Nie jest to bezpośrednia odpowiedź na Twoje pytanie, ale czy rzeczywiście potrzebujesz jakichś funkcji z freeglut? Obsługę okien, klawiatury i kontekstu OpenGL masz bezpośrednio w Qt. Jaki jest sens się meczyć z mieszaniem tych dwóch bibliotek, tym bardziej jeśli projekt ma być mały?
    Polecam rzucić okiem na QOpenGLWidget. Będzie łatwiej.


Log in to reply