我使用旧版本的SDL2已经有一段时间了,从来没有遇到过任何问题;但现在看起来连接不正确了,我也不知道为什么。
下面是整个程序:
#include <stdlib.h>
#include <stdio.h>
#include <SDL2/SDL.h>
int main(int argc, char *argv[]) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *win = nullptr;
SDL_CreateWindow("test", 100, 100, 100, 100, SDL_WINDOW_SHOWN);
return 0;
}我使用的是codeblocks+mingw32,下面是我想象的构建日志的相关部分:
mingw32-g++.exe -LE:\...\SDL2-2.0.0\x86_64-w64-mingw32\lib -LE:\Programs\Code-Blocks\lib -o bin\Debug\SDL2test.exe obj\Debug\main.o -pg -lgmon -lmingw32 -lSDL2main -lSDL2 -lSDL2.dll -lgdi32 -lwinmm -luser32下面是错误:
undefined reference to `SDL_Init'
undefined reference to `SDL_CreateWindow'
undefined reference to `WinMain@16'为了便于比较,下面是一个程序的构建日志,该程序使用几个月前的SDL2构建编译得很好:
mingw32-g++.exe -LE:\...\SDL2\lib -LE:\Programs\Code-Blocks\lib -o bin\Debug\SDL2.exe obj\Debug\main.o -lSDL2_image -lSDL2_ttf -pg -lgmon -lmingw32 -lSDL2main -lSDL2.dll -lSDL2 -lgdi32 -lwinmm -luser32 发布于 2014-06-07 02:27:07
您的链接器选项看起来不错。
确保您的代码块位于正确的目录中。
i686-w64-mingw32用于32位编译。
x86_64-w64-mingw32用于64位编译。
我遇到了和你一样的问题,我花了很长时间才发现我最初的假设是错误的。
使用以下目录进行32位编译:
搜索目录:
编译器
C:\Users\USERNAME\Programs\SDL\SDL2-2.0.3\i686-w64-mingw32\include\
C:\Users\USERNAME\Programs\SDL\SDL2_ttf-2.0.12\i686-w64-mingw32\include\
C:\Users\USERNAME\Programs\SDL\SDL2_image-2.0.0\i686-w64-mingw32\include\链接器
C:\Users\USERNAME\Programs\SDL\SDL2-2.0.3\i686-w64-mingw32\lib
C:\Users\USERNAME\Programs\SDL\SDL2_ttf-2.0.12\i686-w64-mingw32\lib
C:\Users\USERNAME\Programs\SDL\SDL2_image-2.0.0\i686-w64-mingw32\lib我希望这能帮到你!
詹森
https://stackoverflow.com/questions/16874589
复制相似问题