按BarjiLives教程在VSCode装SFML时mingw32-make报_setjmp未定义错误
解决SFML编译时
_setjmp未定义的错误 原因
SFML 2.5.1自带的libfreetype.a依赖旧版MinGW的标准库符号,你使用的GCC 12.1.0属于较新版本,符号命名或库结构有变化,导致链接阶段找不到_setjmp。
解决步骤
方法1:编译时手动添加链接库
在CMake配置阶段给SFML的Graphics模块追加依赖库:
- 若已运行过
cmake,直接修改Build目录下的CMakeCache.txt,找到SFML_GRAPHICS_LIBRARIES条目,末尾追加-lsjlj,保存后重新执行mingw32-make。 - 若还未执行
cmake,直接用以下命令配置:
cmake -G "MinGW Makefiles" -DCMAKE_CXX_FLAGS="-lsjlj" ../SFML-2.5.1
方法2:替换兼容的libfreetype库
- 下载与当前MinGW版本匹配的x64版
libfreetype.a。 - 替换SFML目录
extlibs/libs-mingw/x64/下的原libfreetype.a文件。 - 清空Build目录,重新执行
cmake和mingw32-make。
方法3:降级MinGW版本
使用SFML 2.5.1适配的旧版MinGW(如GCC 8.x或9.x版本),这类版本的标准库符号与SFML自带依赖完全兼容,可直接编译通过。
额外提示
若不想手动编译SFML,可直接下载官方预编译的对应MinGW版本包,解压后配置VSCode的include和lib路径即可。
内容的提问来源于stack exchange,提问作者potato66227
相关产品推荐
相关产品推荐

