调用glfwInit()触发段错误(错误码0xc0000135)求助
解决GLFW初始化段错误(错误码0xc0000135)的排查步骤
核心原因
错误码0xc0000135的本质是系统找不到程序依赖的动态链接库(DLL),结合你的场景,大概率是GLFW的DLL或其依赖库未被正确识别。
具体排查与解决步骤
1. 确保使用匹配的MSYS2终端
你安装的是mingw-w64-x86_64-glfw,必须打开MinGW64终端(而非MSYS或UCRT64终端)编译运行程序——不同终端的环境变量、库路径不兼容,会直接导致DLL查找失败。
2. 确认GLFW DLL存在
检查路径C:\msys64\mingw64\bin\glfw3.dll是否存在,若缺失则重新安装GLFW:
pacman -S --reinstall mingw-w64-x86_64-glfw
3. 让系统找到DLL的三种方法
方法一:添加MinGW64 bin目录到系统PATH
将C:\msys64\mingw64\bin添加到系统环境变量的PATH中,重启所有终端和IDE后,系统会自动在该路径检索DLL。
方法二:手动复制DLL到程序目录
直接把C:\msys64\mingw64\bin\glfw3.dll复制到你的可执行文件所在文件夹(比如CMake生成的build目录下的exe同级目录)。
方法三:CMake自动复制DLL
在你的CMakeLists.txt中添加以下代码,编译时自动将GLFW的DLL同步到程序输出目录:
# 获取GLFW的DLL路径 get_target_property(GLFW_DLL_PATH glfw IMPORTED_LOCATION_RELEASE) # 编译完成后复制DLL到程序目录 add_custom_command(TARGET 2DGameEngine POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GLFW_DLL_PATH} $<TARGET_FILE_DIR:2DGameEngine>)
4. 验证编译环境正确性
打开MinGW64终端,执行以下命令确认环境匹配:
- 检查编译器版本(需为MinGW64版本):
输出应包含g++ --versionx86_64-w64-mingw32-g++。 - 检查GLFW的链接参数(需指向MinGW64库路径):
输出应类似pkg-config --libs glfw3-L/mingw64/lib -lglfw3。
5. 调整CMake配置细节
- 规范
target_link_libraries写法,合并为一行并添加PRIVATE关键字:target_link_libraries(2DGameEngine PRIVATE glfw OpenGL::GL) - 若CMake无法自动找到GLFW,手动指定安装路径:
find_package(glfw3 3.3 REQUIRED PATHS "C:/msys64/mingw64")
6. 用命令行最简编译测试
跳过CMake,直接在MinGW64终端编译你的测试代码(需带上glad.c):
g++ test.cpp glad.c -o test.exe -lglfw3 -lopengl32
运行./test.exe,若能正常执行,说明问题出在CMake或IDE的环境配置;若仍报错,重新安装GLFW并检查系统PATH配置。
内容的提问来源于stack exchange,提问作者Finn Eggers
相关产品推荐
相关产品推荐

