我正在尝试编译以下测试程序:
#include <SDL2/SDL.h>
int main(int argc, char** argv)
{
SDL_Window* window = SDL_CreateWindow("test", 0, 0, 640, 480, 0);
SDL_DestroyWindow(window);
}
我首先在命令行上进行编译,并且正在使用以下命令(稍后将添加警告选项):
gcc test.c -lmingw32 -lSDL2main -lSDL2
在编译该程序时,我收到以下未定义的参考错误:
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\JACOBD~1\AppData\Local\Temp\cceuyYlI.o:test.c:(.text+0x36): undefined reference to `SDL_CreateWindow'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\JACOBD~1\AppData\Local\Temp\cceuyYlI.o:test.c:(.text+0x44): undefined reference to `SDL_DestroyWindow'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../libmingw32.a(main.o):(.text.startup+0xc0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
如上述错误所示,我目前正在使用http://www.mingw.org/中的gcc 9.2.0。在我的另一台开发机器上,我使用https://jmeubank.github.io/tdm-gcc/的TDM-GCC版本5.1.0,该测试程序以及其他SDL2程序可以在该版本上正确编译。
我检查了要与nm链接的库,发现以下内容令人担忧:
nm: effect_position.o: file format not recognized
nm: effect_stereoreverse.o: file format not recognized
nm: effects_internal.o: file format not recognized
nm: load_aiff.o: file format not recognized
nm: load_voc.o: file format not recognized
...
nm: native_midi_win32.o: file format not recognized
我不清楚问题是什么。从我所看到的,我已经将所有库和包含库放置在正确的位置。