Я пытаюсь установить SDL 2.0.3 в CodeBlocks почти два дня, но пока безуспешно.
Я использую последнюю версию Codeblocks, MinGW и SDL.
Я думаю, что я правильно включил и связал все файлы SDL из каталогов lib и include в кодовые блоки, используя Settings/Compiler/Search Directories
в кодовых блоках.
Я также добавил следующую строку в Настройки / Компилятор / Настройки компоновщика / Другие параметры компоновщика:
-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 < / em> Их имена, на мой взгляд, вводят в заблуждение)
У меня есть этот простой тестовый код:
#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-битной компиляции. - person user1810087   schedule 05.10.2014