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
相关产品推荐
相关产品推荐

