FreeGlut: undefined reference In function `glutInit_ATEXIT_HACK':
Unsolved
Polish
-
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'
-
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.