glfwinit()失败.我应该怎么办

glfwInit() fails. What should I do?

本文关键字:我应该 怎么办 失败 glfwinit      更新时间:2023-10-16

所以,我无法创建任何窗口,因为glfwInit()失败。

这是我的cmakelists.txt

cmake_minimum_required(VERSION 3.7)
project(DuperTest)
set(CMAKE_CXX_STANDARD 14)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
add_subdirectory(glfw-3.2.1)
set(SOURCE_FILES main.cpp)
add_executable(DuperTest ${SOURCE_FILES})
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIRS})
target_link_libraries(DuperTest glfw)
target_link_libraries(DuperTest ${OPENGL_LIBRARIES})

和我的代码:

#include <iostream>
#include <GLFW/glfw3.h>
int main()
{
    if (!glfwInit())
    {
        std::cout << "glfwInit" << std::endl;
        glfwTerminate();
        return -1;
    }
    return 0;
}

我绝对迷路了。我该如何修复?

更新:

添加了错误回调。它返回了此消息:

"X11: The DISPLAY environment variable is missing"

我已经有几天了这个问题,无法在网上找到任何有用的东西。我终于能够发现这个问题:使用X11系统时安装了glfw-wayland软件包。卸载Wayland包并安装glfw-x11成功解决GLFW无法初始化。

这个问题是在二十多年前提出的,但我仍然回答,希望它可以使某人免于被阻止的日子。