Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何包括<;高兴/高兴。h>;在C++;? 我在C++中使用OpenGL做了一个项目。我让main.cpp处理openGL初始化,创建窗口等等。 我想创建一个类,在那里我可以外包加载一些纹理到着色器。 但是,当我尝试将shader.h或glad.h头用作任何其他类头中的包含头时,我得到了错误:_C++_Opengl_Header Files - Fatal编程技术网

如何包括<;高兴/高兴。h>;在C++;? 我在C++中使用OpenGL做了一个项目。我让main.cpp处理openGL初始化,创建窗口等等。 我想创建一个类,在那里我可以外包加载一些纹理到着色器。 但是,当我尝试将shader.h或glad.h头用作任何其他类头中的包含头时,我得到了错误:

如何包括<;高兴/高兴。h>;在C++;? 我在C++中使用OpenGL做了一个项目。我让main.cpp处理openGL初始化,创建窗口等等。 我想创建一个类,在那里我可以外包加载一些纹理到着色器。 但是,当我尝试将shader.h或glad.h头用作任何其他类头中的包含头时,我得到了错误:,c++,opengl,header-files,C++,Opengl,Header Files,致命错误C1189:#错误:已包含OpenGL标头,请删除 这包括,高兴已经提供了它 若我在main.cpp中执行所有逻辑,那个么一切都很好,只有在尝试在main.cpp之外的任何地方使用openGL函数时才会出现问题 main.cpp: #include <glad/glad.h> // generated from https://glad.dav1d.de #include "shader.h" int main() { ... //Do Ope

致命错误C1189:#错误:已包含OpenGL标头,请删除 这包括,高兴已经提供了它

若我在main.cpp中执行所有逻辑,那个么一切都很好,只有在尝试在main.cpp之外的任何地方使用openGL函数时才会出现问题

main.cpp:

#include <glad/glad.h> // generated from https://glad.dav1d.de
#include "shader.h"

int main()
{
     ... //Do OpenGL Staff
}

要检查像这样的问题,请使用GCC/g++的-E标志或编译器的其他选项。这将输出预处理器的结果(因此包含etc)。然后可以查看生成的文件并查找双包含。您可能刚刚忘记了某个地方的include-guard:)

不起作用。还有别的事。一些我不认识的预处理器技巧。这是一个存储库,里面有我试图解决的问题,比如删除你的第一个glad.h include。你知道如何在c/c++中使用ifndef定义吗?这是避免出现问题的标准方法。
#ifndef SHADER_H
#define SHADER_H

#include <glad/glad.h>
#include <glm/glm.hpp>


class Shader
{
public:
    unsigned int ID;
...//some Shader definition staff
}
#endif
class Maze
{
public:
    ...//some maze-relate staff
    void LoadMazeToGL(Shader* shader)
   {
        // load and create a texture 
        // -------------------------
        glGenTextures(1, &screenTex1);
        glBindTexture(GL_TEXTURE_1D, screenTex1);
        // set the texture wrapping parameters
        glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);   // set texture wrapping to GL_REPEAT (default wrapping method)
        glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_REPEAT);
        // set texture filtering parameters
        glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

        GLint curMapId = glGetUniformLocation(shader->ID, "shaderInternalVarName");
        glUniform1i(curMapId, 2); // Texture unit 2 is for current map.

        ... //define and fill tex1data using Maze private information
    
        glActiveTexture(GL_TEXTURE0 + 2);
        glBindTexture(GL_TEXTURE_1D, screenTex1);
        glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, MazeIntegerSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, tex1data);
    
    }
}