Ahoj,
pod linuxem napsal jsem programek vyuzivajici SDL a bez problemu prelozil. Problem je v tom, ze ho potrebuju funkcni i pod windows.
Uz jsem nad tim ztravil hodne casu, zkousel jsem nejprve DevC++, pak samostatne MinGW a ted i Code::Blocks. Cetl jsem ruzne navody na internetu.
Problem je, ze porad dostavam chybu, ktera je zachycena na prilozenem screenshotu (resp. v MinGW a v Code::Blocks; v DevC++ jsem dostaval chybu 'undefined reference to 'WinMain@16'', presto, ze to byla konzolova aplikace.
SDL-devel-1.2.13-mingw32 jsem si stahl, prekopiroval potrebne knihovny a hlavickove soubory a pridal i potrebne parametry pro linker.
Nevite nekdo, co s tim ? Diky Taine
Fórum › C / C++
C++ a SDL - nejde zkompilovat
Ano, mam (viz dalsi screen) - takto mam nastavene Project -> Build Options -> Linker settings (jak pro debug tak pro release) a stejne mam nastavene i Settings -> Compiler and Debuger -> Linker Settings.
Diky Taine
s SDL jsem nikdy moc nedelal, ale pamatuju si, ze bylo potreba nakopirovat nejaky .dll soubor bud do slozky s programem nebo do nektere ze systemovych......
To Earl Cash : soubor SDL.dll ve vychozi slozce projektu mam, ale jestli si dobre vzpominam, tak jeho absence by se stejne neprojevila pri kompilaci, ale az po spusteni
To Jura : delal jsem to presne tak, jak pisou na GPwiki, procetl jsem uz predtim hodne podobnych tutorialu ... zkousel jsem to znovu, ale porad to hlasi stejnou chybu (i kdyz pouziju ciste g++ z prikazoveho radku).
Taine
Problem uz jsem vyresil. misto int main() bylo nutne zadat int main(int argc, char *argv[]), coz je divne, protoze predtim v DevC++ jsem toto zkousel a nepomohlo to. Hlavne ze uz to funguje :)
Vyskytl se ale dalsi problem. Snazim se prelozit dalsi verzi, ale kompilace se prerusi s touto chybovou hlaskou: undefined reference to `vtable for MainState'|. Cely chybovy vystup je videt na prilozenem screenu.
Obsah souboru GameStates.hpp, ve kterem by chyba mela byt:
#ifndef GAMESTATE_HPP_
#define GAMESTATE_HPP_
#include <SDL/SDL.h>
#include "main.hpp"
// abstraktni trida, vychozi trida hernich stavu
// implementuje pouze signalizaci zmeny stavu
// NOTICE: kazdy herni stav musi byt potomkem teto tridy
class GameState
{
protected:
// signal zmeny stavu
GAME_STATE statechange;
public:
// vychozi konstruktor nastavi statechange na S_NOSTATE - signal zachovani aktualniho herniho stavu
GameState() { statechange = S_NOSTATE; }
// vola stavovy stroj, aby zachytil pripadny signal zmeny stavu
GAME_STATE getstatechange() { return statechange; }
virtual void start() = 0;
virtual void input(SDL_Event event) = 0;
virtual void update(long time) = 0;
virtual void draw() = 0;
virtual void stop() = 0;
};
// trida hlavniho herniho stavu, potomek tridy GameState
class MainState : public GameState
{
private:
public:
// inicializace herniho stavu
void start();
// obsluha vstupu
void input(SDL_Event event);
// aktualizace sceny
void update(long time);
// vykresleni sceny
void draw();
// deinicializace herniho stavu
void stop();
};
// trida hlavniho herniho stavu, potomek tridy GameState
class IntroState : public GameState
{
private:
enum { TIMEMAX = 10000 };
public:
// inicializace herniho stavu
void start();
// obsluha vstupu
void input(SDL_Event event);
// aktualizace sceny
void update(long time);
// vykresleni sceny
void draw();
// deinicializace herniho stavu
void stop();
};
#endif
Zda se mi to divne, protoze metody tridy GameState, ktere nejsou inline, jsou definovane jako ciste virtualni a u potomku MainState a IntroState jsou ve zvlastnich souborech vsechny metody rozepsane.
Na linuxu jsem program prelozil bez problemu.
Taine
No, takhle se to těžko odhaduje, nicméně ujisti se, že máš u VŠECH potomků dopsány implmentace všech čistě virtuálních metod a taky tam nikde nevidím, že bys definoval virtuální destruktory - což je taky důležíté - kompilátor je tuším sám negeneruje.
U vsech potomku jsou dopsane implementace vsech peti ciste virtualnich metod. Virtualni destruktory definovane nejsou - nejsou ani potreba, protoze se zatim nikde zadna dynamicka pamet neprideluje. Nicmene, zkusil jsem se doplnit, ale nepomohlo to.
Zalozim pro tenhle problem nove tema a pridam tam i kompletni zdrojovy kod, kdyby se mi na to chtel nekdo podivat.
Kazdopadne diky, Taine
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
Podobná vlákna
Nejde zkompilovat program — založil tečka
Proč nejde zkompilovat projekt ve Visual Studiu... — založil oxidián
Jak zkompilovat c++ ve VS — založil Luky
Jak zkompilovat program — založil oxidián
Ako zkompilovat do suboru .jar — založil sato
Moderátoři diskuze