Qt使用Glut库
原文地址:Qt使用Glut库作者:loserboy2004 最近在学OpenGL,以前一直用Qt,Qt虽然能够开发OpenGL,但是不管我在LINUX下还是在XP里面如果用GLUT库都出现问题,提示找不到库,这是怎么回事?难道QT不支持GLUT库(刚学OPENGL喜欢用GLUT库),应该不可能,开始放弃用QT学GLUT库,用DEVC++,用了一段时候觉得DEVC++还是不如QT好用,又用
·
原文地址:Qt使用Glut库
作者:loserboy2004
#include <GL/glut.h>
void renderScence()
{
glClear(GL_COLOR_BUFFER_BIT);
glutSwapBuffers();
}
void setupRC()
{
glClearColor(0,0,0,1);
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE);
glutCreateWindow("Qt+OpenGL+glut");
glutDisplayFunc(renderScence);
setupRC();
glutMainLoop();
return 0;
}
出现以下错误:
Running build steps for project OpenGL...
Configuration unchanged, skipping qmake step.
Starting: "D:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directory `D:/My Documents/OpenGL-build-desktop'
D:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `D:/My Documents/OpenGL-build-desktop'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"....Qt2010.05qtincludeQtCore" -I"....Qt2010.05qtincludeQtGui" -I"....Qt2010.05qtinclude" -I"....Qt2010.05qtincludeActiveQt" -I"debug" -I"..OpenGL" -I"." -I"....Qt2010.05qtmkspecswin32-g++" -o debugmain.o ..OpenGLmain.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debugOpenGL.exe debug/main.o -L"d:Qt2010.05qtlib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
mingw32-make[1]: Leaving directory `D:/My Documents/OpenGL-build-desktop'
debug/main.o: In function `Z12renderScencev':
D:My DocumentsOpenGL-build-desktop/../OpenGL/main.cpp:4: undefined reference to `_imp__glClear'
D:My DocumentsOpenGL-build-desktop/../OpenGL/main.cpp:5: undefined reference to `glutSwapBuffers'
debug/main.o: In function `Z7setupRCv':
D:My DocumentsOpenGL-build-desktop/../OpenGL/main.cpp:9: undefined reference to `_imp__glClearColor'
debug/main.o: In function `main':
D:My DocumentsOpenGL-build-desktop/../OpenGL/main.cpp:13: undefined reference to `glutInit'
D:My DocumentsOpenGL-build-desktop/../OpenGL/main.cpp:14: undefined reference to `glutInitDisplayMode'
D:My DocumentsOpenGL-build-desktop/../OpenGL/main.cpp:15: undefined reference to `glutCreateWindow'
D:My DocumentsOpenGL-build-desktop/../OpenGL/main.cpp:16: undefined reference to `glutDisplayFunc'
D:My DocumentsOpenGL-build-desktop/../OpenGL/main.cpp:18: undefined reference to `glutMainLoop'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debugOpenGL.exe] Error 1
mingw32-make: *** [debug] Error 2
mingw32-make: Leaving directory `D:/My Documents/OpenGL-build-desktop'
The process "D:/Qt/2010.05/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project OpenGL (target: Desktop)
When executing build step 'Make'
看来库没有设置好,现在在OpenGL.pro文件里加入LIBS=-lopengl32 -lglut32 -lglut
加入了这些连接库一样出现上面的错误,是怎么回事?再加入 #include <windows.h>要加入到所以GLUT库的最前面,现在就编译通过。运行时就可以看到一个黑色的窗口了。
测试版本windows xp+Qt 7.7.0(32bit)
现在再来说一下Linux版本下的。我用的是(Debian Linux(6.0)),Linux下是安装的Mesa的GLUT库,也是已经安装好的。
也是用上面的代码,运行时提示找不到glut库,undefined reference to `glutSwapBuffers'
然后在OpenGL.pro里加入:LIBS=-lopengl32 -lglut32 -lglut
再次编译,编译能够通过,可是为什么不能运行,提示找不到glut.so.3这是为什么?
用命令窗口进入到OpenGL(刚才编译的结果)的目录,输入ldd OpenGL,提示是:glut.so.3====>Nothing
原来是库没有。我安装GLUT库时是把glut.so.3.7.1装在/usr/local/lib下,现在把它自制(root权限)到/usr/lib或者复制到Qt里lib目录里(比如我的是/home/myname/Qt/2010.05/qt/lib)目录里。最好是进行符号连接为:in -s glut.so.3.7.1 glut.so.3
这下就OK了。
以上供参考,根据各版本可能不完全相同。
更多推荐
已为社区贡献1条内容
所有评论(0)