OpenGL环境配置求助
如题,准备用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 对应的链接库,但是我明明放进目录里了啊?
#define GLUT_DISABLE_ATEXIT_HACK
#include <windows.h>
#include <GL/glut.h>
const int A = 500;/* length of a side of the monitor window */
const float B = 500;/* length of a side of the clipping rectangle */
const float C = 200;/* length of a side of the square the program draws */
void myinit(void)
{
glClearColor(0.7, 0.7, 0.7, 0.0); /* gray background */
glMatrixMode(GL_PROJECTION); /* In World coordinates: */
glLoadIdentity(); /* position the "clipping rectangle" */
gluOrtho2D( -B/2, B/2, -B/2, B/2);/* at -B/2, its right edge at +B/2, its bottom */
glMatrixMode(GL_MODELVIEW); /* edge at -B/2 and its top edge at +B/2 */
}
void display( void )
{
glClear(GL_COLOR_BUFFER_BIT); /* clear the window */
glMatrixMode(GL_MODELVIEW); /* The following coordinates are expressed */
glLoadIdentity(); /* in terms of World coordinates */
glBegin(GL_POLYGON) ; /* draw a filled polygon */
glColor3f ( 1.0, 0.3, 0.2); /* draw in light red */
glVertex2f( -C/2, -C/2 ); /* (x,y) */
glVertex2f(C/2, -C/2 ); /* (x,y) */
glVertex2f(C/2,C/2 ); /* (x,y) */
glVertex2f( -C/2,C/2 ); /* (x,y) */
glEnd();
glFlush(); /* send all commands */
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitWindowSize( A, A ); /* A x A pixel screen window*/
glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE);
glutCreateWindow("My Rectangle"); /* window title */
glutDisplayFunc(display); /* tell OpenGL main loop what */
myinit(); /* set attributes */
glutMainLoop(); /* pass control to the main loop*/
return 0;
}
错误:
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
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
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
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
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
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
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
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
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
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe cannot find -lglut32
C:\Users\summer\Desktop\openglstudy\collect2.exe ld returned 1 exit status
求解答 您好!您遇到的问题很常见,主要是由于库文件架构不匹配导致的。您的 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.dll、freeglut.lib、freeglut.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 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]