我试图在CodeBlocks中设置SDL 2.0.3将近两天,但到目前为止还没有运气。
我正在使用最新版本的Codeblocks,MinGW和SDL。
我想我已经在Codeblocks中使用Settings/Compiler/Search Directories
正确地将 lib 和 include 目录中的所有SDL文件包含并链接到代码块中。
我还在设置/编译器/链接器设置/其他链接器选项中添加了以下行:
-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>
我知道有几个相同或熟悉的问题,但他们都没有接受答案。
我将感激你的每一个帮助。
答案 0 :(得分:0)
我意识到,我之前提到的 tutorial 是针对32位版本所以我尝试使用32位版本和所有内容现在正在工作。
除非您需要获得SDL_platform.h
文件的固定版本并将其替换为旧版本。这是SDL版本2.0.3中的一个错误,应根据我在互联网上找到的内容在新版本中修复。
如果你不这样做,你会得到编译错误,说winapifamily.h