Win7-64bit + Eclipse-Indigo,搭建OpenGL学习环境(freeglut+glew)

冥辰mc 2016-04-17 08:49:51
笔者本本为Acer V3-572G-59TB,显卡GeForce 840M。 希望以“OpenGL Programming Guide 8th Edition - 2013”作为参考书籍学习OpenGL。

看完第一章,前几日尝试在Debian 8(Xfce桌面)和Ubuntu 14.04(Gnome桌面)下配置环境,均以驱动原因失败。 因为本本是Intel+Nvidia显卡,Debian下只能用Blumblee,却对OpenGL支持不好,貌似无法正常运行。 于是安装Ubuntu系统,结果装完Nvidia私有驱动后就无法进入桌面。

笔者比较喜欢Linux的风格,从去年开始一直在用Debian,所以如果有前辈会配置Debian(或Ubuntu)的Nvidia驱动,希望能不吝赐教,不胜感激。

------------完美分割------------

好了,现在起码Win7系统Nvidia驱动程序能够工作正常,我从

https://sourceforge.net/projects/freeglut/

下载freeglut的源码后用CMake失败,于是从

http://files.transmissionzero.co.uk/software/development/GLUT/freeglut-MinGW-3.0.0-1.mp.zip

下载了freeglut的MinGW已编译版本, 从

https://sourceforge.net/projects/glew/?source=typ_redirect

下载了glew。

得到

freeglut
bin
Copying.txt
include
lib
Readme.txt

\freeglut\bin
freeglut.dll
x64

\freeglut\bin\x64
freeglut.dll

\freeglut\include
GL

\freeglut\include\GL
freeglut.h
freeglut_ext.h
freeglut_std.h
glut.h

\freeglut\lib
libfreeglut.a
libfreeglut_static.a

\freeglut\lib\x64
libfreeglut.a
libfreeglut_static.a

将freeglut\bin\freeglut.dll拷贝到%SystemRoot%\SysWOW64, \freeglut\bin\x64\freeglut.dll拷贝到%SystemRoot%\System32;
将freeglut\include\GL\*拷贝到%MinGW%\include\GL;
将freeglut\lib\libfreeglut.a & libfreeglut_static.a 拷贝到%MinGW%\lib.

得到

glew-1.13.0
bin
doc
include
lib
LICENSE.txt
README.txt
TODO.txt

glew-1.13.0\bin
Release
Release MX

glew-1.13.0\bin\Release
Win32
x64

glew-1.13.0\bin\Release\Win32
glew32.dll
glewinfo.exe
visualinfo.exe

glew-1.13.0\bin\Release\x64
glew32.dll
glewinfo.exe
visualinfo.exe

glew-1.13.0\bin\Release MX
Win32
x64

glew-1.13.0\bin\Release MX\Win32
glew32mx.dll

glew-1.13.0\bin\Release MX\x64
glew32mx.dll

glew-1.13.0\doc
...

glew-1.13.0\include
GL

glew-1.13.0\include\GL
glew.h
glxew.h
wglew.h

glew-1.13.0\lib
Release
Release MX

glew-1.13.0\lib\Release
Win32
x64

glew-1.13.0\lib\Release\Win32
glew32.lib
glew32s.lib

glew-1.13.0\lib\Release\x64
glew32.lib
glew32s.lib

glew-1.13.0\lib\Release MX\Win32
glew32mx.lib
glew32mxs.lib

glew-1.13.0\lib\Release MX\x64
glew32mx.lib
glew32mxs.lib

将glew-1.13.0\bin\Release\Win32\glew.dll拷贝到%SystemRoot%\SysWOW64, glew-1.13.0\bin\Release\x64\glew.dll拷贝到%SystemRoot%\System32;
将glew-1.13.0\include\GL\*拷贝到%MinGW%\include\GL;
将glew-1.13.0\lib\Release\Win32\glew32.lib & glew32s.lib拷贝到%MinGW%\lib.

笔者自认为这里每一步都没有什么异常,于是在Eclipse建立C++工程,按照书籍编辑源码LoadShaders.cpp, LoadShaders.h, triangles.cpp, vgl.h, triangles.frag, triangles.vert。
构建时加入链接库 -lfreeglut -lopengl32 -lglu32 -lglew32。

结果是,构建失败:


**** Rebuild of configuration Debug for project FirstOpenGL02 ****

**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o triangles.o ..\triangles.cpp
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o LoadShaders.o ..\LoadShaders.cpp
g++ -LC:\MinGW\lib -o FirstOpenGL02.exe triangles.o LoadShaders.o -lfreeglut -lopengl32 -lglu32 -lglew32
triangles.o: In function `glutInit_ATEXIT_HACK':
c:/mingw/include/gl/freeglut_std.h:637: undefined reference to `_imp____glutInitWithExit@12'
triangles.o: In function `glutCreateWindow_ATEXIT_HACK':
c:/mingw/include/gl/freeglut_std.h:639: undefined reference to `_imp____glutCreateWindowWithExit@8'
triangles.o: In function `glutCreateMenu_ATEXIT_HACK':
c:/mingw/include/gl/freeglut_std.h:641: undefined reference to `_imp____glutCreateMenuWithExit@8'
triangles.o: In function `Z4initv':
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:42: undefined reference to `_imp____glewGenVertexArrays'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:43: undefined reference to `_imp____glewBindVertexArray'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:53: undefined reference to `_imp____glewGenBuffers'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:54: undefined reference to `_imp____glewBindBuffer'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:56: undefined reference to `_imp____glewBufferData'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:67: undefined reference to `_imp____glewUseProgram'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:72: undefined reference to `_imp____glewVertexAttribPointer'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:73: undefined reference to `_imp____glewEnableVertexAttribArray'
triangles.o: In function `Z7displayv':
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:85: undefined reference to `_imp____glewBindVertexArray'
triangles.o: In function `main':
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:97: undefined reference to `_imp__glutInitDisplayMode@4'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:98: undefined reference to `_imp__glutInitWindowSize@8'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:99: undefined reference to `_imp__glutInitContextVersion@8'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:100: undefined reference to `_imp__glutInitContextProfile@4'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:109: undefined reference to `_imp__glutDisplayFunc@4'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../triangles.cpp:111: undefined reference to `_imp__glutMainLoop@0'
LoadShaders.o: In function `LoadShaders':
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:62: undefined reference to `__glewCreateProgram'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:66: undefined reference to `__glewCreateShader'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:73: undefined reference to `__glewDeleteShader'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:80: undefined reference to `__glewShaderSource'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:83: undefined reference to `__glewCompileShader'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:86: undefined reference to `__glewGetShaderiv'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:101: undefined reference to `__glewAttachShader'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:112: undefined reference to `__glewLinkProgram'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:115: undefined reference to `__glewGetProgramiv'
E:\Workspaces\eclipse-cpp-indigo\FirstOpenGL02\Debug/../LoadShaders.cpp:128: undefined reference to `__glewDeleteShader'
collect2.exe: error: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 2338 ms.


参考http://blog.sina.com.cn/s/blog_7a00bf7501018mcj.html尝试解决错误,失败。

所以想请教?
...全文
461 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
冥辰mc 2017-12-04
  • 打赏
  • 举报
回复
Debian 支持驱动不好,解决不了。
冥辰mc 2016-04-17
  • 打赏
  • 举报
回复
引用 1 楼 ynsenyu 的回复:
sudo apt-get install libglew-dev freeglut3-dev 就可以了,自己折腾什么,你下的都不是linux的开发包,linux区分大小写的,-lopengl32改成-lGLEW -lGL
你好,首先谢谢你的回答。你说的对,Linux下freeglut和glew配置都正确。但是如问题描述,因为Linux下我的本本显卡驱动有问题,并且解决不了,依然无法运行OpenGL程序
ynsenyu 2016-04-17
  • 打赏
  • 举报
回复
sudo apt-get install libglew-dev freeglut3-dev 就可以了,自己折腾什么,你下的都不是linux的开发包,linux区分大小写的,-lopengl32改成-lGLEW -lGL
冥辰mc 2016-04-17
  • 打赏
  • 举报
回复
引用 3 楼 ynsenyu 的回复:
intel集显和nvidia的开源驱动都支持到opengl3.0,不过如果你用的是ubuntu10.04这种老古董那就不知道了
引用楼主
看完第一章,前几日尝试在Debian 8(Xfce桌面)和Ubuntu 14.04(Gnome桌面)下配置环境,均以驱动原因失败。 因为本本是Intel+Nvidia显卡,Debian下只能用Blumblee,却对OpenGL支持不好,貌似无法正常运行。 于是安装Ubuntu系统,结果装完Nvidia私有驱动后就无法进入桌面。
???, So, the answer is 'Ubuntu 14.04'.
ynsenyu 2016-04-17
  • 打赏
  • 举报
回复
intel集显和nvidia的开源驱动都支持到opengl3.0,不过如果你用的是ubuntu10.04这种老古董那就不知道了
MyEclipse2013 (32+64)下载地址(建议使用迅雷下载) http://downloads.myeclipseide.com/downloads/products/eworkbench/2013/installers/myeclipse-pro-2013-offline-installer-windows.exe 安装后先不要启动,先运行破解文件。 破解文件需要JAVA环境支持,请先安装JDK,配置环境变量(不会请百度之) 破解文件还是之前的,只是帮大家验证了一下重新打包上传分享 破解文件支持9.x~10.7.1的破解 在此鄙视一下网上收费下载的。 MyEclipse 2013 目录结构有点不一样 所以替换教程中的第五步 选择替换目录直接替换安装目录下的\plugins 目录即可 2013 版本 更改了很多东西,至少我自己的许多web项目迁移过去会报错, 因此不太推荐使用以前版本的人升级使用2013版本,当然如果是学习使用倒是没什么 测试两台 win8 x 64 破解MyEclipse2013都是通过的 如果觉得不适应2013 可以继续尝试10.7.1版本 MyEclipse10.7.1 (32+64)下载地址 http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/installers/myeclipse-10.7.1-offline-installer-windows.exe 特别要注意的是 MyEclipse2013 破解后 支持war包导出了 之前9.x~10.7.1 的所有版本破解之后导出war包都会报错! 免责声明: 本破解程序来自于互联网分享,不得用于商业用途,提供破解仅供学习交流使用,请支持购买正版! 因使用本软件造成的法律纠纷与本人无关!

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧