c语言 - 使用 mingw, SDL 的 gcc: "undefined reference to `SDL_Init'" 错误消息是什么意思,如何解决?



所以我正在尝试编译一个基本的sdl程序。由于找不到有问题的图书馆,我遇到了多个不同的错误。然而,这个错误我不知道如何修复。严重的realoc错误尤其让我担心,尽管我认为一旦我弄清楚如何定义所涉及的特定函数,它就会消失。

所以Windows 7,64位使用来自mingw 的gcc.exe

我从https://www.libsdl.org/download-2.0.php

我有一个我自己制作的compile.bat文件。

D:
"D:MinGWbingcc.exe" sdlproto.c -o sdlproto.exe -ISDL2-2.0.3x86_64-w64-mingw32includeSDL2 -LSDL2-2.0.3x86_64-w64-mingw32lib -lSDL2 -lSDL2main
pause

因此错误消息

C:UsersBREADP~1AppDataLocalTempccitXsxN.o:sdlproto.c:(.text+0xe): undefined reference to `SDL_Init'
C:UsersBREADP~1AppDataLocalTempccitXsxN.o:sdlproto.c:(.text+0x13): undefined reference to `SDL_Quit'
d:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: C:UsersBREADP~1AppDataLocalTempccitXsxN.o: bad reloc address 0x20 in section `.eh_frame'
d:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operationcollect2.exe: error: ld returned 1 exit status

我找到了一个解决方案。第一步是我不小心在一台64位机器上使用了mingw32。移动到mingw64将错误消息更改为缺少WinMain。将启动函数从main更改为WinMain使其能够顺利编译,并且以下源代码运行时没有出现任何错误。

#include "SDL.h"
int WinMain(int argc, char *argv[])
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Quit();
return 0;
} 

这个解决方案是错误的,但据我所知,它正在发挥作用。

最新更新