Програмата за кръстосано компилиране не може да намери SDL2 заглавки

Работя по проект в c++, който използва автоматични инструменти за лесно кръстосано компилиране. Имам sudo make install MXE на моята система. Когато просто използвате ./configure и следователно използвате g++, нещата вървят гладко. Въпреки това, използвайки ./configure --host=i686-w64-mingw32, срещам тази грешка:

In file included from Game.cpp:1:0:
Game.hpp:4:22: fatal error: SDL2/SDL.h: No such file or directory
#include <SDL2/SDL.h>

След цял ден ровене в Google, изглежда не мога да намеря индикатор защо. Знам, че при компилиране на Win (в момента на Ubuntu 15.04), заглавките се наименуват по различен начин за SDL, но все още използвам Unix компилатор, според моите разбирания. Трябва ли да имам отделен източник за Windows с различно включване? Наблюдавах инсталацията на mxe за грешки и не получих нито една, така че не мога да си представя това да е проблемът.

Ако е необходимо, мога да предоставя по-пълна картина на средата, но смятам, че това може би е специфична грешка/предупреждение за операционната система.


person Bloodyaugust    schedule 27.06.2015    source източник
comment
Всъщност имате ли файл SDL.h или той е наречен по различен начин? Какво се случва, когато добавите -I/path/to/SDL2/ в опциите на вашия компилатор? Какво казва pkg-config --cflags SDL2?   -  person Dmitry Grigoryev    schedule 29.06.2015
comment
Ще опитам подхода с флаг -I и ще докладвам. sdl2-config --cflags изходи: -I/usr/include/SDL2 -D_REENTRANT. SDL.h съществува в /usr/include/SDL2/.   -  person Bloodyaugust    schedule 29.06.2015
comment
Уверете се, че не включвате SDL2 два пъти. Ако използвате -I/usr/include/SDL2 и #include <SDL2/SDL.h>, компилаторът ще търси /usr/include/SDL2/SDL2/SDL.h   -  person Dmitry Grigoryev    schedule 30.06.2015


Отговори (1)


SDL2 заглавките трябва да бъдат включени, както следва:

#include <SDL.h>

Не:

#include <SDL2/SDL.h>

Защо?

Защото, когато стартирате sdl2-config --cflags, той извежда път като този include/SDL2 и ако направите ls върху него, ще получите SDL.h не SDL2/SDL.h.

person Jean Pierre Dudey    schedule 29.06.2015
comment
Но както описах в публикацията си, makeing, когато е конфигуриран за *nix система, работи добре. Можете да видите резултата от config cflag в коментара на основната публикация. - person Bloodyaugust; 29.06.2015
comment
@Bloodyaugust ще бъде грешка в конфигурацията, проверете пътищата си. Ако използвате #include <SDL2/SDL.h> на unix-подобни системи, това ще работи, защото SDL2 е на стандартния път за включване, но не се случва на windows, така че ще трябва да използвате #include <SDL.h>, всяка друга грешка е от конфигурацията, която имате. - person Jean Pierre Dudey; 29.06.2015