Qt使用Glut库

原文地址:Qt使用Glut库 作者:loserboy2004

    最近在学OpenGL,以前一直用Qt,Qt虽然能够开发OpenGL,但是不管我在LINUX下还是在XP里面如果用GLUT库都出现问题,提示找不到库,这是怎么回事?难道QT不支持GLUT库(刚学OPENGL喜欢用GLUT库),应该不可能,开始放弃用QT学GLUT库,用DEV C++,用了一段时候觉得DEV C++还是不如QT好用,又用回到QT,可是QT使用GLUT库的问题解决不了啊?怎么办?昨天在网上也找了好久也是找不到答案,自己慢慢还给弄出来了。给大家分享一下。

    先说一下QT在WINDOWS XP下连接GLUT库的做法。(已经把GLUT库和头文件还有DLL文件都放在了相应的位置,如果不知道怎么做网上的介绍的比较多)

    首先,创建一个QT空项目,取名为OpenGL,然后在OpenGL项目里添加源文件取名main.cpp,在main.cpp里添加代码如下:

#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了。
 
 
以上供参考,根据各版本可能不完全相同。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值