鱼C论坛

 找回密码
 立即注册
查看: 51|回复: 1

OpenGL环境配置求助

[复制链接]
回帖奖励 20 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次(中奖概率 40%)
发表于 昨天 15:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,准备用Dev-C++老古董学点基础的OpneGL,但是在配置环境的时候出了点问题。

我下载的包裹是 glut-3.7.6-bin ,文件夹包含4个文件,

glut.def
glut.h
glut32.dll
glut32.lib


将 glut.h 放在了  "C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\GL\" 目录下 (在编译目录中添加了该路径)
将 glut.def 和 glut32.lib 放在了 "C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\" 目录下 (在编译目录中添加了该路径)
将 glut32.dll 放在了 "C:\Windows\System32\" 目录下。

做完这些后我尝试编译这段代码(网上抄的,纯用来测试环境),结果出现错误
编译选项加入了 -lopengl32 -lglut32
好像是说找不到 -lglut32 对应的链接库,但是我明明放进目录里了啊?

  1. #define GLUT_DISABLE_ATEXIT_HACK
  2. #include <windows.h>
  3. #include <GL/glut.h>

  4. const int   A = 500;  /* length of a side of the monitor window */
  5. const float B = 500;  /* length of a side of the clipping rectangle */
  6. const float C = 200;  /* length of a side of the square the program draws */

  7. void myinit(void)
  8. {
  9.   glClearColor(0.7, 0.7, 0.7, 0.0); /* gray background */

  10.   glMatrixMode(GL_PROJECTION);      /* In World coordinates: */
  11.   glLoadIdentity();                 /* position the "clipping rectangle" */
  12.   gluOrtho2D( -B/2, B/2, -B/2, B/2);/* at -B/2, its right edge at +B/2, its bottom */
  13.   glMatrixMode(GL_MODELVIEW);       /* edge at -B/2 and its top edge at +B/2 */
  14. }

  15. void display( void )
  16. {
  17.                                     
  18.   glClear(GL_COLOR_BUFFER_BIT);     /* clear the window */

  19.   glMatrixMode(GL_MODELVIEW);       /* The following coordinates are expressed */
  20.   glLoadIdentity();                 /* in terms of World coordinates */

  21.   glBegin(GL_POLYGON) ;             /* draw a filled polygon */
  22.       glColor3f ( 1.0, 0.3, 0.2);       /* draw in light red */
  23.       glVertex2f( -C/2, -C/2 );         /* (x,y) */
  24.       glVertex2f(  C/2, -C/2 );         /* (x,y) */
  25.       glVertex2f(  C/2,  C/2 );         /* (x,y) */
  26.       glVertex2f( -C/2,  C/2 );         /* (x,y) */
  27.   glEnd();

  28.   glFlush();                        /* send all commands */
  29. }

  30. int main(int argc, char** argv)
  31. {
  32.   glutInit(&argc,argv);
  33.   glutInitWindowSize( A, A );       /* A x A pixel screen window  */

  34.   glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE);
  35.   glutCreateWindow("My Rectangle"); /* window title                   */
  36.   glutDisplayFunc(display);         /* tell OpenGL main loop what     */
  37.   myinit();                         /* set attributes                 */

  38.   glutMainLoop();                   /* pass control to the main loop  */
  39.   return 0;
  40. }
复制代码


错误:
  1. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib/glut32.lib when searching for -lglut32
  2. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/../lib/glut32.lib when searching for -lglut32
  3. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/glut32.lib when searching for -lglut32
  4. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib/glut32.lib when searching for -lglut32
  5. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\glut32.lib when searching for -lglut32
  6. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/../lib/glut32.lib when searching for -lglut32
  7. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/../lib\glut32.lib when searching for -lglut32
  8. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/glut32.lib when searching for -lglut32
  9. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        skipping incompatible C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib\glut32.lib when searching for -lglut32
  10. C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        cannot find -lglut32
  11. C:\Users\summer\Desktop\openglstudy\collect2.exe        [Error] ld returned 1 exit status
复制代码


求解答
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 15:53 | 显示全部楼层
您好!您遇到的问题很常见,主要是由于库文件架构不匹配导致的。您的 Dev-C++ 使用的是 64 位 MinGW 编译器,但您下载的 glut32.lib 是 32 位库,导致链接器跳过它。以下是解决方案:

问题分析:
- 错误信息 "skipping incompatible glut32.lib" 表明库文件与编译器架构不兼容。
- 您的编译器是 64 位(路径中包含 x86_64-w64-mingw32),但 glut32.lib 是 32 位库。

解决方案:
1. 下载 64 位 GLUT 库:
   - 推荐使用 freeglut(GLUT 的开源替代品),因为它支持 64 位。
   - 从可靠来源下载 freeglut 的 Windows 预编译包(例如,搜索 "freeglut MinGW64")。
   - 确保下载的包包含 64 位版本的文件(如 freeglut.dllfreeglut.libfreeglut.h)。

2. 替换文件并更新配置:
   - 将下载的 freeglut.h 放到 C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\GL\(覆盖原有文件)。
   - 将 freeglut.lib 放到 C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\
   - 将 freeglut.dll 放到 C:\Windows\System32\(或您的项目目录下)。
   - 在 Dev-C++ 的编译选项中,将 -lglut32 改为 -lfreeglut(具体名称取决于下载的库文件名)。

3. 修改代码中的头文件:
   - 如果使用 freeglut,将代码中的 #include <GL/glut.h> 改为 #include <GL/freeglut.h>

4. 重新编译:
   - 确保编译选项包含 -lopengl32 -lfreeglut(或对应的库名)。
   - 清理项目并重新构建。

额外提示:
- 如果仍遇到问题,尝试将 freeglut.dll 直接复制到您的项目目录(与源代码同一文件夹)。
- 确保 Dev-C++ 使用的是正确的编译器路径(工具 -> 编译选项 -> 目录)。
- 如果不想更换库,可以尝试安装 32 位 Dev-C++ 版本,但推荐使用 64 位库以匹配当前环境。

按照以上步骤操作后,您的测试代码应该能正常编译运行。如果还有问题,请提供更多错误细节,我会进一步协助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-17 04:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表