You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:35:36