Я использую Windows 7, Code:: Blocks и MinGW. У меня мало опыта, когда дело доходит до компиляции/создания чего-либо, особенно когда Code:: Blocks не использует make файлы.
Я загрузил SDL2-devel-2.0.0-mingw.tar.gz(библиотеки разработки SDL) из http://www.libsdl.org/tmp/download-2.0.php, и я Я хотел бы создать автономный исполняемый файл с использованием библиотек SDL2, но до сих пор мне всегда приходилось связывать файл SDL2.dll с исполняемым файлом, чтобы он работал.
Я слышал, что я не могу использовать динамические библиотеки статической связи, поэтому мой единственный вариант, похоже, что-то делает с исходными файлами, используя файл SDL2-2.0.0.tar.gz(Исходный код) из ссылки я упомянутое выше. Однако я не знаю, что мне с этим делать.
Мне удалось попробовать с исходными файлами импортировать проект Visual Studio в Code:: Blocks и его создать, но он говорит мне: "sdl-config Нет такого файла или каталога" (я не знаю, что это вызвало), Я также не уверен, что создание просто дает мне исполняемый файл, с помощью которого я не знаю, что я могу сделать, чтобы связать его с моим собственным исполняемым файлом.
Лучшим решением для решения этого случая будет лучший шаг за шагом идиотский дурак.
EDIT:
Мне удалось собрать библиотеки SDL с предоставленным руководством Jonas и получить файл libSDL2.a.
Сначала я только добавил путь libSDL2.a к разделу "Связывание библиотек:" - раздел Code:: Blocks, но я получил кучу ошибок, таких как "SDL_Init(), не объявленный в этой области".
В дополнение к пути libSDL2.a я также добавил путь к SDL2-2.0.0\include в каталог поиска компилятора, а также путь к SDL2-2.0.0\build.libs в каталог поиска компоновщика, Я также написал это в свой тестовый файл: #include "SDL.h". Мой тестовый файл теперь выглядит следующим образом:
#include "SDL.h"
int main( int argc, char* args[] ) {
//Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
//Quit SDL
SDL_Quit();
return 0;
}
Кажется, он исправил проблему объявления, но теперь Code:: Blocks открыл файл SDL_mmjoystick.c и дал мне еще больше ошибок: "undefined ссылка на ссылку" waveInClose @4 "," undefined " 'waveOutClose @4' "," undefined ссылка на 'joyGetNumDevs @0' "и тонны других.
Вот скриншот того, что происходит, обратите внимание на другой цвет текста #include, я не уверен, почему это происходит: http://gyazo.com/00656a9c1e57a2bd0db1414fa7d68ced.png
Я не уверен, как правильно использовать эту библиотеку. Любая помощь в этом случае, или я должен задать еще один вопрос?
EDIT:
Я добавил -lSDL2 в параметры компоновщика и удалил другие параметры. Теперь он строит отлично:
mingw32-g++.exe -Wall -fexceptions -g -IC:\Users\User\Desktop\SDL2-2.0.0\include -c "C:\Users\User\Desktop\CppProjects\SDL project\main.cpp" -o obj\Debug\main.o
mingw32-g++.exe -Wall -fexceptions -g -IC:\Users\User\Desktop\SDL2-2.0.0\include -c "C:\Users\User\Desktop\CppProjects\SDL project\thetestfile.cpp" -o obj\Debug\thetestfile.o
mingw32-g++.exe -LC:\Users\User\Desktop\SDL2-2.0.0\build\.libs -o "bin\Debug\SDL project.exe" obj\Debug\main.o obj\Debug\thetestfile.o -lSDL2 ..\..\SDL2-2.0.0\build\.libs\libSDL2.a C:\Users\User\Desktop\SDL2-2.0.0\build\.libs\libSDL2.a -mwindows
Output size is 945.80 KB
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 0 warnings (0 minutes, 1 seconds)
Но когда я пытаюсь запустить его, он говорит, что моему компьютеру не хватает SDL2.dll, в то время как все дело в static-link.
Итак, в настоящее время у меня есть путь для сборки /.libs в моих библиотеках Link -settings, -lSDL2 в других опциях компоновщика, а для каталогов поиска у меня есть путь к SDL2-2.0.0/include для компилятора и SDL2 -2.0.0/build/.libs для компоновщика.
В каталоге build/.libs также можно увидеть файлы libSDL2.a, libSDL2.dll.a, libSDL2.la и libSDL2.lai, которые я не знаю, каковы они.