Miért nem működik az SDL? (C++)
Dev C++ 4.9.9.2-t és SDL 12.15-t használok. Szeretnék majd valamilyen egyszerű 2D-s side-scrolling gamet készíteni valamikor. Jelenleg még tanulom a C++-t, és a legbonyolultabb játékom egy konzolablakos ping-pong volt, de egy-két nagyon egyszerű példát szeretnék már most látni grafikus eszközök használatával.
#include "SDL/SDL.h"
int main(int argc, char* args[])
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Quit();
return 0;
}
Ez volt a neten a legelső példa amit találtam, láthatóan leginkább csak arra jó, hogy megmutassa, egyáltalán jól van e fent az SDL, le tudja-e fordítani, de nekem egy csomó hibát ír ki a fordító:
Nevtelen1.cpp SDL/SDL.h: No such file or directory.
Nevtelen1.cpp In function `int main(int, char**)':
Nevtelen1.cpp `SDL_INIT_EVERYTHING' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
Nevtelen1.cpp `SDL_Init' undeclared (first use this function)
Nevtelen1.cpp `SDL_Quit' undeclared (first use this function)
Makefile.win [Build Error] [Nevtelen1.o] Error 1
Nem tudom mi lehet a baja, a linkernek azt a paramétert adtam meg, amit a neten is írtak(minden tutorialban ugyanazt láttam, így szerintem nem azzal van a gond). Megadtam a könyvtárakat is a fordító beállításában.
Remélem tud valaki segíteni.
Code::Blockshoz ez alapján könnyű feltenni:
#include "SDL/SDL.h"
A "" azt jelenti, hogy ugyan abban a könyvtárban kell keresnie mint ahol a .cpp fájlod, próbáld meg így:
#include <SDL/SDL.h>
Ilyenkor az ismert helyeken keresi a fordító, nyílván a projektnél hozzá kell adnod az SDL/include könyvtárat ahová tetted.
Az SDL jelenleg a 2.0.1 verziónál tart, miért ragaszkodsz ennyire "historic" verzióhoz?
"A "" azt jelenti, hogy ugyan abban a könyvtárban kell keresnie mint ahol a .cpp fájlod, próbáld meg így:"
Dehát ez hülyeség. A "" azt jelenti, hogy ott IS keresi, meg amúgy mindenhol máshol, ahol <>-vel is. Mármint praktikusan, mert a szabvány ezt nem köti ki ennyire pontosan.
A linked alapján:
The difference is in the location where the preprocessor searches for the included file.
For #include "filename" the preprocessor searches in the same directory as the file containing the directive. This method is normally used to include programmer-defined header files.
For #include <filename> the preprocessor searches in an implementation dependent manner, normally in directories pre-designated by the compiler. This method is normally used to include standard library header files.
A lényeg itt van:
#include "q-char-sequence" new-line
...
The named source file is searched for in an implementation-defined manner. If this search is not supported, or if the search fails, the directive is reprocessed as if it read
#include <h-char-sequence> new-line
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!