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

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


有一个额外的“ 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吗?

最佳答案

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

    #include <KHR/khrplatform.h>


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

    #include <glad/KHR/khrplatform.h>


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

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

- - 高兴

- - - -高兴

---------- glad.h

------- KHR

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

您将必须将include目录更改为此:

-依赖

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

- - - -高兴

---------- glad.h

------- KHR

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

因为那样会使glad.h中的<KHR/khrplatform.h>正确。

您也可以摆脱那个多余的文件夹,但是如果您真的想保留它,则必须在Visual Studio中更改include目录。

您可以通过以下方式找到要更改的特定设置:

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

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

另外,您可以更改glad.h文件,但我不建议这样做。您可能会在将来的某个时刻感到高兴,这意味着您将不得不再次手动更改该行代码。

关于c++ - 错误消息:无法打开“KHR/khrplatform.h”,但是在程序中的任何位置都不存在“khrplatform”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54526188/

10-09 12:46