SDL не найден для MinGW
Я не могу за свою жизнь понять, что не так. Я следовал этому руководству здесь: http://lazyfoo.net/SDL_tutorials/lesson01/windows/mingw/index.php
Я не могу получить g++ для компиляции. Я получаю следующую ошибку:
testgame.c:1:21: fatal error: SDL/SDL.h: No such file or directory
#include "SDL/SDL.h"
Вот код в файле:
#include "SDL/SDL.h"
int main( int argc, char* args[] )
{
//Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
//Quit SDL
SDL_Quit();
return 0;
}
Справочники:
C:\MinGW\include\
- Здесь я поместил папку SDL с файлами *.h
C:\MinGW\lib\
- Здесь я разместил все файлы lib для SDL
Я также поместил SDL.dll в папку с моим файлом / исполняемым файлом.
Я использую следующее для компиляции:
g++ -o testgame.exe testgame.c -lmingw32 -lSDLmain -lSDL
Я понятия не имею, что я могу делать неправильно. Я искал по всему, и пока ничего не получалось. Пожалуйста помоги!
Спасибо Трэвис
Обновить:
Изменение оператора включения на:
#include "C:/MinGW/include/SDL/SDL.h"
Исправляет первоначальную ошибку, но теперь я получаю:
C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDLmain
C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL
collect2.exe: error: ld returned 1 exit status
@cat предложил следующее:
g++ -o testgame.exe testgame.c -lmingw32 -L.SDLmain -lSDL
Однако это вернуло эту ошибку:
C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL
@vonaka предложил:
g++ -o testgame.exe testgame.c -lmingw32 -LC:/MinGW/lib/
Однако это вернуло несколько ошибок.
2 ответа
Я понял, как решить эту проблему. Я поместил все соответствующие файлы SDL и / или SDL2 в отдельную папку в C:\ с именем mingw_dev_lib. Затем я явно указал пути к папке lib и папке include внутри этого нового каталога следующим образом:
gcc testgame.c -IC:\mingw_dev_lib\include\SDL2 -LC:\mingw_dev_lib\lib -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2 -o testgame.exe
Компиляция прошла успешно после этих шагов. Странно, однако, что он не скомпилируется при попытке доступа к этим файлам и стандартным каталогам C:\MinGW.
Похоже, вы использовали g++ не тот, куда вы скопировали файлы библиотеки SDL. Возможно, другая программа установила свой собственный MinGW и установила системный путь к нему (например, Perl использует MinGW для компиляции модулей). Вы можете узнать с помощью:
where g++
Для решения этой проблемы вы можете изменить системный путь (требует повторного открытия оболочки) или переименовать неиспользуемые папки MinGW.