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

MinGW编译SDL2项目遇SDL函数未定义引用问题及解决

SDL2 编译报错:undefined reference to `SDL_GetVersion' 解决记录

问题详情

我要创建一个基于SDL2 2.24.2的项目,写了一段打印SDL版本的简单代码:

#include <stdio.h>
#include "SDL2/SDL.h"

#undef main
int main(int argc, char **argv) {

    SDL_version nb;
    SDL_GetVersion(&nb);

    printf("sdl version %d.%d.%d", nb.major, nb.major, nb.patch);

    return 0;
}

使用以下命令编译:

gcc src/*.c -o bin/sampleSDL -I include -L lib -lmingw32 -lSDL2main -lSDL2

编译时出现错误:

c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\CDRIC~1\AppData\Local\Temp\ccaOMh5N.o:main.c:(.text+0x16): undefined reference to `SDL_GetVersion'
collect2.exe: error: ld returned 1 exit status

我使用的是32位版本,项目结构如下:

SampleSDLproject
|-bin
| |-SDL2.dll
| |-sdl2-config
|
|-include
| |-SDL2
| | |-SDL头文件
|
|-lib
| |-SDL库文件夹
|
|-src
| |-main.c

尝试过的无效操作

  • 安装MinGW的其他C/C++包
  • 更换SDL版本(最初用2.24.1)
  • 因VSCode提示被迫安装endian.h

最终解决方案

将SDL库文件夹中的x86_64-w64-mingw32替换为i686-w64-mingw32,匹配32位的MinGW编译环境即可解决链接错误。

内容的提问来源于stack exchange,提问作者Darkflame

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:05:25