未正确引用但链接正确

时间:2020-09-10 17:24:05

标签: c linker sdl-2

我正在尝试编译以下测试程序:

#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

我不清楚问题是什么。从我所看到的,我已经将所有库和包含库放置在正确的位置。

0 个答案:

没有答案