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
 

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