SDL2 无法正确链接

SDL2 won't link properly

本文关键字:链接 SDL2      更新时间:2023-10-16

我使用的是Code::Blocks,这是我的代码:

#include "SDL2/SDL.h"
int main(int argc, char* args[]) {
    SDL_Init( SDL_INIT_EVERYTHING );
    SDL_Quit();
    return 0;
}

我的建筑风格:

mingw32-g++.exe -o C:..main.exe C:..main.o  -lmingw32 -lSDL2main -lSDL2

得到它:

undefined reference to "SDL_Init"
undefined reference to "SDL_Quit"

我很确定链接器找到了libs,因为如果我把它们改成随机的,它会抱怨"找不到任何东西"

有点晚了,但我只是在Linux上偶然发现了一个类似的问题。

这会导致链接器错误:

g++ $(pkg-config --cflags --libs sdl2) sdl2test.cpp 
sdl2test.cpp:(.text+0x11): undefined reference to `SDL_Init'
sdl2test.cpp:(.text+0x20): undefined reference to `SDL_GetError'
sdl2test.cpp:(.text+0x34): undefined reference to `SDL_Quit'

这项工作:

g++ sdl2test.cpp $(pkg-config --cflags --libs sdl2)

即使这是一个Linux问题,我也是通过谷歌发布这篇文章的。

也许它可以帮助其他人:我在Windows XP 32位代码块上遇到了同样的问题:Mingw+SDL2,我在将正确的SDLFolders(include,lib…)复制到Mingw文件夹后修复了它。我陷入这个陷阱的原因是,从DEV包中命名SDL根文件夹有点令人困惑。您得到了一个"x86_64-w64-mingw32"文件夹,它是用于64位编译器的,而"i686-w64-minw32"是用于32位编译器的(就像大多数编译器一样)。我把这件事搞砸了,因为"x86…"的命名,仍然不知道他们为什么要这样写。

覆盖正确的文件后,它对我来说很好。

你确定你的路径中有你的库吗?

尝试将-LC:/whatever/与实际包含libSDL2.a和其他*.a的文件夹一起添加到编译器的参数中。