gpt4 book ai didi

c++ - 为什么我的 opengl freeglut 应用程序编译为 C 而不是 C++?

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:19 25 4
gpt4 key购买 nike

这不是代码的问题,因为当我告诉编译器将其编译为 C 时它会编译,但当我将设置设置为默认值(即将其编译为 C++)时它不会编译。当我将它编译为 C++ 时,我得到了很多类似“对 glClear 的 undefined reference ”的错误

我正在使用 Microsoft 的 Visual Studio C++ 编译器。我已正确链接所有内容。

代码是:

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



void display(void)
{
/* Clear all pixels */
glClear(GL_COLOR_BUFFER_BIT);

/* draw white polygon (rectangle) with
* corners at (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0)
*/

glColor3f(1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f(0.25, 0.25, 0.0);
glVertex3f(0.75, 0.25, 0.0);
glVertex3f(0.75, 0.75, 0.0);
glVertex3f(0.25, 0.75, 0.0);
glEnd();

/* don't wait!
* start processing buffered OpenGL routines
*/

glFlush();
}

void init(void)
{
/* Select clearing background color */
glClearColor(0.0, 0.0, 0.0, 0.0);

/* Initialize viewing values */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}


/*
* Declare initial window size, position, and display mode
* (single buffer and RGBA). Open window with “hello”
* in its title bar. Call initialization routines.
* Register callback function to display graphics.
* Enter main loop and process events.
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250, 250);
glutInitWindowPosition(100, 100);
glutCreateWindow("hello");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0; /* ISO C requires main to return int. */
}

另外,如果有人有合适的资源用 C++ 学习 opengl,您能推荐一下吗?

最佳答案

这可能是因为 glClear 没有在当前包含的任何头文件中声明。在 C 中,未声明的函数通常根据其参数假定具有特定类型,并返回 int。因此,当使用 C 编译时,您可能会收到有关它未声明的警告(我希望您已启用警告,并在编译时阅读它们?),但它会尽力编译和链接它。

C++ 对未声明的函数更加严格。

关于c++ - 为什么我的 opengl freeglut 应用程序编译为 C 而不是 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326752/

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