为何MinGW无法找到-lraylib?Raylib编译报错求助
Raylib C++代码编译失败问题解决
核心问题
编译Raylib C++代码时遇到两个关键错误:
- 初始编译提示找不到
-lraylib库 - 指定库路径后出现库架构不兼容错误,链接器跳过
libraylib.a
相关代码
#include "C:\raylib\raylib\src\raylib.h" int main(void) { const int width = 1024; const int height = 512; InitWindow(width, height, "raycaster go brr"); SetTargetFPS(60); while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); EndDrawing(); } CloseWindow(); return 0; }
初始编译命令与报错
编译命令:
g++ main.cpp -o main -O1 -Wall -std=c99 -Wno-missing-braces -L ./lib/ -lraylib -lopengl32 -lgdi32 -lwinmm
报错信息:
cc1plus.exe: warning: command line option '-std=c99' is valid for C/ObjC but not for C++ C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lraylib collect2.exe: error: ld returned 1 exit status
更新后编译命令与报错
编译命令:
g++ main.cpp -o main -O1 -Wall -Wno-missing-braces -LC:/raylib/raylib/src -lraylib -lopengl32 -lgdi32 -lwinmm
报错信息:
C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/raylib/raylib/src/libraylib.a when searching for -lraylib C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/raylib/raylib/src\libraylib.a when searching for -lraylib C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/raylib/raylib/src/libraylib.a when searching for -lraylib C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lraylib collect2.exe: error: ld returned 1 exit status
解决方案
1. 修正C++编译标准参数
-std=c99是C语言的编译标准,不适合C代码。替换为C标准,比如-std=c++17(或更高版本):
-std=c++17
2. 解决库架构不兼容问题
你使用的是x86_64(64位)版本的MinGW,但当前libraylib.a是32位架构的,导致链接器判定不兼容并跳过。解决方法二选一:
- 下载对应64位架构的Raylib预编译库,替换现有
libraylib.a - 自行编译64位版本的Raylib库(从Raylib源码编译时,确保使用同架构的MinGW工具链)
3. 规范头文件引用方式
不要在代码中写绝对路径的include,改用-I参数指定头文件目录,代码中直接引用raylib.h:
- 编译命令添加:
-I C:/raylib/raylib/src - 代码中include改为:
#include "raylib.h"
4. 最终可用编译命令
整合以上修正后的完整命令:
g++ main.cpp -o main -O1 -Wall -Wno-missing-braces -std=c++17 -I C:/raylib/raylib/src -LC:/raylib/raylib/src -lraylib -lopengl32 -lgdi32 -lwinmm
内容的提问来源于stack exchange,提问作者NikoMolecule
相关产品推荐
相关产品推荐

