我正在尝试在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/