windows glfwInit()导致分段错误,退出代码为-1073741515(0xc 0000135)

cld4siwp  于 2022-11-18  发布在  Windows
关注(0)|答案(1)|浏览(155)

我一直试图让我的一个老项目工作,它使用一些OpenGL代码。我无法产生一个工作的可执行文件。所有发生的是,只是通过调用glfwInit(),是一个分段错误:

我最好的猜测是,它不知何故没有使用/找到我试图使用的glfwdll。
让我来解释一下我的当前设置:
1.我已经使用msys 2安装了glfw:

pacman -S mingw-w64-x86_64-glfw

1.我已经创建了一个很好的头文件和源文件
1.我写了一个简单的cmake-file(2年前也可以用)

cmake_minimum_required(VERSION 3.23)
project(2DGameEngine)

find_package(glfw3 3.3 REQUIRED)
find_package(OpenGL REQUIRED)

set(CMAKE_CXX_STANDARD 23)

file(GLOB_RECURSE SRCS src/*.cpp src/*.c)

add_executable(2DGameEngine ${SRCS})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wshadow")

target_link_libraries(2DGameEngine glfw)
target_link_libraries(2DGameEngine OpenGL::GL)

1.我用了我能找到的最简单的例子:

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

int main()
{
    // glfw: initialize and configure
    // ------------------------------
    if(!glfwInit()){
        std::cout << "error" << std::endl;
        exit(1);
    }
    return 0;
}

然而我无法摆脱调用glfwInit()时的分段错误。我假设它与一些.dll丢失有关,但我不知道如何检查它。我很高兴得到任何帮助。

xurqigkl

xurqigkl1#

0xc0000135是Windows操作系统在执行程序时找不到所需的dll时出现的错误。这里有一个方便的站点可以解码这些类型的错误:https://james.darpinian.com/decoder/?q=0xc0000135
使用此程序:https://github.com/lucasg/Dependencies以找出无法找到的dll,然后将dll与可执行文件放在同一文件夹中,或者编辑OS PATH环境变量以包含包含该dll的文件夹。
下面是一篇关于如何设置OS PATH环境变量的好文章:https://www.computerhope.com/issues/ch000549.htm
此Microsoft文档中还包含其他几个选项,说明了操作系统如何以及在何处搜索dll:https://learn.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order#search-order-for-desktop-applications

相关问题