gpt4 book ai didi

c++ - 自定义 QOpenGLWidget 和 GLEW 包括

转载 作者:行者123 更新时间:2023-11-28 05:48:46 24 4
gpt4 key购买 nike

抱歉,如果这是一个非常基本的问题,但我很困惑:
我正在使用 Visual Studio 并正在创建自定义 QOpenGLWidget类(通过从基类继承),我的问题如下:

  • 如果我添加 #include <QOpenGLWidget>在我的自定义类中,还添加了 #include对于 glew.h , 我可以访问 glew.h 中定义的内容
  • 但是如果我添加 #include <QtWidgets>在我的自定义类中(虽然我也会涵盖 QOpenGLWidget),然后我无法访问 glew.h 中定义的内容我看到“标识符未定义”错误(例如,对于 glGenVertexArrays )

有人可以告诉我我在这里缺少什么吗?我猜包括我只需要的东西( #include <QOpenGLWidget> )比 <QtWidgets> 中的很多东西要好,但为什么它会阻止我访问 glew.h 中定义的内容? ?

感谢任何帮助

最佳答案

您不能同时包含 Qt 的 OpenGL 包装器大多数OpenGL loading library标题。不同的 .cpp 文件可以包含不同的 header ,但同一个 .cpp 不能。因此,您必须选择要使用的内容:GLEW 或 Qt 的 OpenGL 包装器。

这不起作用的原因是加载程序通常使用包含保护来防止您意外包含 <GL/gl.h>或类似的标题。加载库往往是排他性的,因为它们通常定义与其他 OpenGL 头文件相同的符号。如果他们没有阻止您这样做,那么如果您尝试同时包含两者,您可能会遇到多重定义符号错误。

Qt 的 OpenGL 包装器本身就是一个加载库。所以它执行相同的排除技巧,定义 GLEW 和其他加载程序将使用的包含保护。因此,您不能在同一个 .cpp 文件中同时使用两者。

关于c++ - 自定义 QOpenGLWidget 和 GLEW 包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35703883/

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