Qt5 & OpenGL: stdlib.h: 没有那个文件或目录

Qt5 & OpenGL: stdlib.h: No such file or directory

我开始研究如何在我的Qt5项目中集成GLFW、GLAD和OpenGL。我收到此 stdlib.hno such file or directory 错误。 我尝试 运行 的示例是 from official OpenGL documentationThis document 很好地描述了 运行 项目的过程以及从这里开始的所有其他会议。

我的 stdlib.h 出现在 /usr/include/stdlib.h 上,可以从这个打印屏幕上看到:

除此之外,我还有一个奇怪的错误,编译器需要花括号,但无法找出这个错误的原因:

更详细的错误描述如下:

我一直在研究这个错误,我看了 here, and here and even I used this source 但无法弄清楚问题是什么以及如何 link 库,它已经在显示的路径中。

代码片段为:

helloOpenGL.pro

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
        main.cpp

LIBS += -L "/usr/lib" \
      -lX11 -lpthread -lXrandr -lXi -ldl -lGL

INCLUDEPATH += "/usr/include"
LIBS += -L "/usr/include/GLFW" \
      -lglfw3

我在 main.cpp 上的主要内容如下:

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

感谢您阐明这个问题。

尝试改变

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

#include <cstdlib>
#include <iostream>
#include "../glad/glad.h"
#include "../GLFW/glfw3.h"

看看这是否会改变错误。在 stdlib.h 上更改为 cstdlib 是因为 stdlib.h 是 C header 而不是 C++ header,并且 cstdlib 做了一些命名空间的事情和一些轻微的修改以使其更多C++ish 描述 here。至于用 glad 和 GLFW headers 将 <> 更改为“”,这只是改变了预处理器搜索 headers 的位置,这也可能与您的错误有关。

至于问题,headers 及其在 C++ 中的顺序很重要。我有一种直觉,这里的排序导致了一些问题。请改变它,如果它没有修复,希望它能揭示更多关于这个问题的信息。