我已经尝试了近两天在CodeBlocks中安装SDL 2.0.3,但到目前为止没有成功。
我正在使用最新版本的Codeblocks、MinGW和SDL。
我认为我已经通过在Codeblocks中使用“Settings/Compiler/Search Directories”将lib和include目录中的所有SDL文件正确地包含和链接到代码中。
我还在“Settings/Compiler/Linker Settings/Other Linker Options”中添加了以下行:
-lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_mixer
我已将SDL2.dll添加到项目目录中。
我相信我正在使用正确的SDL文件。我有64位系统,并且我正在使用来自x86_64-w64-mingw32目录的文件,这是根据网络上几篇教程的说法适合64位系统的正确文件。
(当您下载SDL开发库时,有32位和64位系统的版本,因此有两个目录:x86_64-w64-mingw32和i686-w64-mingw32。在我看来,它们的名称非常具有误导性)
我有这个简单的测试代码:
#include <SDL.h>
int main(int argc, char* argv[]) {
// Start SDL2
SDL_Init(SDL_INIT_EVERYTHING);
// Create a Window in the middle of the screen
SDL_Window *window = 0;
window = SDL_CreateWindow("Hello World!",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640, 480,
SDL_WINDOW_SHOWN);
// Delay so that we can see the window appear
SDL_Delay(2000);
// Cleanup and Quit
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
} <br>
编译器显示以下内容:
mingw32-g++.exe -LC:\SDL\SDL2_2.0.3\lib -LC:\SDL\SDL2_image_2.0.0\lib -LC:\SDL\SDL2_mixer_2.0.0\lib -o bin\Debug\Snake.exe obj\Debug\main.o -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_mixer
obj\Debug\main.o: In function `SDL_main':
D:/CodeBlocks/Snake/main.cpp:6: undefined reference to `SDL_Init'
D:/CodeBlocks/Snake/main.cpp:15: undefined reference to `SDL_CreateWindow'
D:/CodeBlocks/Snake/main.cpp:18: undefined reference to `SDL_Delay'
D:/CodeBlocks/Snake/main.cpp:21: undefined reference to `SDL_DestroyWindow'
D:/CodeBlocks/Snake/main.cpp:22: undefined reference to `SDL_Quit'
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
我跟随了这个教程:https://www.youtube.com/watch?v=wWGtuc5uqF4,但是有些细节已经发生变化。当你下载 SDL 开发库并解压缩它时,它看起来不同,但我认为至少部分正确,因为编译器可以找到
<SDL.h>
。我知道有几个相同或类似的问题,但没有一个有被接受的答案。 我将非常感谢每一次帮助。
-m64
进行64位编译。 - user1810087