0

我正在尝试在 OpenGL 中打开一个窗口。在 Visual Studio 中,我设置了一个包含所有头文件的包含目录,例如 glfw3.h 和glad.h。我的包含语句格式正确:

#include <glad/glad/glad.h>
#include <GLFW/glfw3.h> 

有一个额外的“glad/”,因为在文件资源管理器中有一个额外的glad 文件夹。包含文件夹中的另一个头文件是“khrplatform.h”。这是目录顺序:

包括/高兴/KHR/khrplatform.h

这是我为打开窗口而编写的代码:

#include <glad/glad/glad.h>
#include <GLFW/glfw3.h> 


int main() {
glfwInit(); //initializes the openGL window

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //This line and the next set the desired version of glfw (major.minor)
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); 
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //sets openGL to the core profile (fewer functions)

return 0;
}

我的 Visual Studio 项目中还有一个glad.c 文件,它是开窗编程所必需的。我收到的错误消息指定了glad.c 文件中的错误。这是错误:

1>------ Build started: Project: OpenGL_SampleProject, Configuration: Debug Win32 ------
1>glad.c
1>c:\users\david\documents\opengl\libs_include\include\glad\glad\glad.h(95): fatal error C1083: Cannot open include file: 'KHR/khrplatform.h': No such file or directory
1>Done building project "OpenGL_SampleProject.vcxproj" -- FAILED.

问题是文本“khrplatform.h”根本没有出现在glad.c 中。所以我不知道这个错误是从哪里来的。有设置和使用 OpenGL 经验的人可以为我回答这个问题吗?

4

1 回答 1

1

在glad.h 中,包含khrplatform.h。使用的确切语法是:

    #include <KHR/khrplatform.h>

因为您添加了另一个高兴的文件夹,所以您将包含目录设置得太高了。这意味着glad.h 实际上应该引用:

    #include <glad/KHR/khrplatform.h>

如果您的文件夹结构如下所示:

-dependencies(在 Visual Studio 中设置为包含目录)

- - 高兴的

- - - -高兴的

----------高兴.h

--------KHR

----------khrplatform.h

您必须将包含目录更改为:

-依赖关系

----glad(在 Visual Studio 中设置为包含目录)

- - - -高兴的

----------高兴.h

--------KHR

----------khrplatform.h

因为那会使<KHR/khrplatform.h>inglad.h 正确。

你也可以去掉那个额外的文件夹,但如果你真的想保留它,你必须在 Visual Studio 中更改你的包含目录。

您将更改的特定设置如下所示:

在解决方案资源管理器中右键单击项目名称 -> 属性 -> C/C++ -> 常规

在“其他包含目录”设置下,您必须将路径更改为上述路径。

或者,您可以更改glad.h 文件,但我不建议这样做。正如您将来可能会更新很高兴,这意味着您将不得不再次手动更改该代码行。

于 2020-03-04T23:30:27.913 回答