cus, chtel jsem si konecne vyzkouset nejakou grafickou knihovnu v cecku a tak jsem sahnul po sdl. nainstaloval a prosel nejake tutorialy. ale hned prvni pokusy o rozbehnuti ukazkoveho programu skoncily bez uspechu.
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
#include <stdbool.h>
int main(int argc, char *argv[]){
if( SDL_Init(SDL_INIT_VIDEO) < 0 ){
printf("Inicializace SDL se nezdařila: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
SDL_Surface *screen;
screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
if ( screen == NULL ){
printf("Vytvoření okna se nezdařilo: %s\n", SDL_GetError());
exit(1);
}
bool done=false;
while(done == false){
}
}
jsem zkusil zkompilovat, ale vyhodi mi to chybu. nenajde sdl.h a pak se tahnou dal chyby s jeho funkcemi. sdl jsem instaloval pres update manager v dev c++, instalace probehla v pohode. nema nekdo nejaky napad co s tim?
Fórum › C / C++
Sdl c
Zkus <SDL/SDL.h>
To CommanderZ :
nene, tim to neni
A jses si jisty, ze ten "Update manager" spravne instaluje ty hlavickove soubory/knihovny? Ja si s MSVS to udelal hezky manualne a jede to krasne :)
A mas spravne nastavene cesty,kde hledat include soubory?Ona instlace probehne v poradku,ale v IDE se nenastavi automaticky cesty tech novych hlavicek.
To dannyk : tak to me nenapadlo. a nemas tuseni, jak je spravne nastavit? dik
To marc_ramin : Takže asi to bude tým, že nemáš nastavené hlavičkové súbory takže si pozri tunajší tutoriál kde je to hneď na začiatku všetko pekne vysvetlené a tiež si nezabudni do priečinku s projektom nakopírovať súbor SDl.dll bez neho ti to teda nepobeží.
To zalezi podle vyvojovyho prostredi.Ale vetsinou se podivej do project properties a v kompileru najdi polozku additional header files nebo tak nejak,tam pak nastav cestu k tem hlavickam.Pak se v linkeru nastavuji additional library files (*.lib).A po kompilaci je dobre hodit sdl.dll ke zkompilovanemu exe souboru.
To dannyk : pouzivam dev c++, a podle tvych instrukci jsem se to pokusil upravit, ale v kompilatoru jsem zadnou moznost na pridani hlavickovyho souboru nenasel. a opravdu mi prijde divny, ze si to neudela sam, kdyz to stahnea nainstaluje, proc to nemuze nainstalovat tak, aby to chodilo?
To Anonymní uživatel : spis se mrkni kam se nahral ten SDL.h
pak stejne budes muset v projektu pridat knihovny ktery se maj prilinkovat... tj to bude neco jako libsdl.a nebo podobny ptakoviny ... teda pokud to neveme z dll
On to nemuze upravovat,protoze nevi,jake mas vyvojovy studio.Ono by to treba slo udelat nejakou detekci,ale spise spolehaji na to,ze si to uzivatel nainstaluje a nastavi vse potrebne.Dev c++ neznam,takze nedokazu presne rict kaj co nastavit.
To dannyk : uz jsem z toho docela na prasky... pokud nekdy nekdo pridaval sdl knihovnu do dev c a povedlo se mu to. muze mi prosim pomoct? zkousel jsem to i podle postupu, ktery tu je nekde na webu popsany, ale dopadl jsem uplne stejne jako pri automaticky instalaci: nijak. dik
tady je dost podrobnej návod, sám sem to podle něj dělal
http://lazyfoo.net/SDL_tutorials/lesson01/windows/devcpp/index.php
jinak celej ten web mi přijde dost užitečnej a je na něm všechno od základů SDL až po pokročilejší věci
jediná věc co mě na tutoriálech na SDL štve je to, že každej autor si řeší po svém třeba smyčku událostí, kreslení atd. takže se v tom pak težko člověk vyzná..
To Phoenix : super, uz sdlckuju =). diky moc. bylo to v spatnem nastaveni cest ke knihovnam. jenom jsem preinstaloval dev a je to ok
Mám takový problém s SDL. Napsal jsem program na zobrazování .bmp obrázku z tutorialu na techto strankach. Dělám to v Visual C++ Express 2008. Když jsem program zkompiloval poprve vsechno běželo tak jak mělo, podruhé už mi to vyhodilo neošetřenou vijímku. Když jsem pátral na internetu našel jsem jak ji ošetřit( tedy testovat jestli se obrazek opravdu načetl). problém je v tom že sice v VC++ mi to tu vyjímku vyhodí a program se přeruší ale pokud program zpustim normálně ve windows tak běží normálně.
Tady přikládám zdroják(už to není původní program z techto stranek ale nalezeny podobny z inetu):
#include <stdlib.h>
#include <sdl/SDL.h>
int main(int argc, char *argv[])
{
SDL_Surface *screen,*image;
SDL_Rect drect,srect;
SDL_Event event;
//inicializuje grafiku SDL pokud nastane chyba program ji vypíše a ukončí se
if (SDL_Init(SDL_INIT_VIDEO)< 0 ) {
fprintf(stderr, "Problem: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
//nastaví rozlišení 640x480 s 16b barevné hloubky, dále tagy říkají, že grafika bude přes celou obrazovku, screen bude uložen na video kartě a bude se používat Double Buffer, to znamená, že se jedna část se zobrazuje a do druhé se kreslí.
screen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
//skryje se kurzor myši
//nahraje se obrázek
image=SDL_LoadBMP("sdl_title.bmp");
if (image == NULL) {
fprintf(stderr, "Couldn't load %s: %s\n", "SDL_now.bmp", SDL_GetError());
return 0;
}
srect.x=0;
srect.y=0;
srect.w=image->w;
srect.h=image->h;
drect=srect;
drect.x=(screen->w-image->w)/2;
drect.y=(screen->h-image->h)/2;
//do prostřed obrazovky se vykreslí obrázek
SDL_BlitSurface(image,&srect,screen,&drect);
//přehodí se přední a zadní buffer a tím se obrázek zjeví uživateli
SDL_Flip(screen);
//čeká se do uvolnění jakékoliv klávesy
while (SDL_WaitEvent(&event),event.type!=SDL_KEYUP);
return 1;
}
Prostě to nechce přečíst obrazek když je to spuštěný přes VC++ přitom se to zkompiluje a při spuštění normálně ze systému to funguje naprosto normálně. Skoušel jsem i smáznout vygenerovaný .exe a znovu skompilovat => dělá to to samý.
díky za odpověď
Tak, mne sa to raz stalo tiež, že som oživil 2 roky staré vlákno. A bolo to spôsobené tým, že toto fórum si robí niekedy čo chce. Na dátum sa málokedy pozerám a vlákno bolo uvedené medzi prvými takže ma nenapadlo, že by bolo zabudnuté. Možno kedy to tu fungovalo ako sa patrí tak by sa to nestávalo... :-/
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze