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.

Другие вопросы по тегам