gpt4 book ai didi

c - OpenGL 项目存在 Codeblocks 编译问题

转载 作者:行者123 更新时间:2023-11-30 15:34:30 25 4
gpt4 key购买 nike

我正在使用 Codeblocks(在带有 GCC 的 Ubuntu 中),并且已经获得了 OpenGL 所需的文件,现在正在学习有关 OpenGL 基础知识的教程:

我的(基于教程的)代码:

#include <GL/glu.h>
#include <GL/freeglut.h>

//#include <GL/gl.h>
#include <GL/glut.h>

void display(void)
{
/* clear window */

glClear(GL_COLOR_BUFFER_BIT);


/* draw unit square polygon */

glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();

/* flush GL buffers */

glFlush();

}


void init()
{

/* set clear color to black */

/* glClearColor (0.0, 0.0, 0.0, 0.0); */
/* set fill color to white */

/* glColor3f(1.0, 1.0, 1.0); */

/* set up standard orthogonal view with clipping */
/* box as cube of side 2 centered at origin */
/* This is default view and these statement could be removed */

/* glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); */
}

int main(int argc, char** argv)
{

/* Initialize mode and open a window in upper left corner of screen */
/* Window title is name of program (arg[0]) */

/* You must call glutInit before any other OpenGL/GLUT calls */
glutInit(&argc,argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("simple");
glutDisplayFunc(display);
init();
glutMainLoop();

}

当我尝试在 Codeblocks 中运行它(在build设置中设置 GCC)时,出现以下错误:

error: undefined reference to glClear error:

undefined reference to glBegin ...

在尝试更改build设置几个小时后,我决定从命令行调用 GCC:gcc -o main main.c -lGL -lGLU -lglut

编译没有问题,我什至可以运行它。所以我不确定问题是什么。(另外,在 Codeblocks 中,我确实将“-lGL -lGLU -lglut”添加到了构建选项中。)

为什么命令行 GCC 可以编译这个而代码块却不能?

注意:在 Codeblocks 中,我关闭了build设置中的所有编译器标志。链接器设置为空。我唯一添加的是上述编译器选项。

最佳答案

Linker Settings is empty. The only thing I have added are the above-mentioned compiler options

这就是问题所在:库链接是链接器设置。这些 -l... 必须进入链接器设置,而不是编译器设置。另外,在 opengl32.lib 之前添加 gdi32.lib 也很重要,这样才能找到所有符号。

在 Windows 上,OpenGL header 本身依赖于 windows.h 中定义的宏,因此您应该编写类似的内容

#ifdef _WIN32
#include <windows.h>
#endif
#include <GL/gl.h>

关于c - OpenGL 项目存在 Codeblocks 编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23248422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com