Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Problem[kompilacja w c++]

 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
AMD
pijak



Dołączył: 05 Mar 2006
Posty: 161
Przeczytał: 0 tematów


PostWysłany: Wto 20:15, 06 Cze 2006    Temat postu: Problem[kompilacja w c++]

Mam pytanie.
Jak skompilowac coś takiego(w dev c++)
Kod:

http://www.ucz.almalo.edu.pl/~mkepa/SpaceFight.zip

tzn coś co zawiera kilka plików.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Wto 22:05, 06 Cze 2006    Temat postu:

tworzysz nowy projekt, dodajesz do niego wszystkie pliki .cpp i kompilujesz przez ctrl+11

Twoj plik Character..cpp ma podwojna kropke - nie wiem czy to specjalnie ale zwrocilo uwage
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Skrobocik
[SKROBORANGA]



Dołączył: 29 Lis 2005
Posty: 2958
Przeczytał: 0 tematów

Skąd: Skarżysko , Kraków

PostWysłany: Wto 22:22, 06 Cze 2006    Temat postu:

Albo można makefile'a zrobić....wcale nie takie trudne, tylko na początku jest ciężko :wink:
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
AMD
pijak



Dołączył: 05 Mar 2006
Posty: 161
Przeczytał: 0 tematów


PostWysłany: Wto 22:25, 06 Cze 2006    Temat postu:

Zrobiłem tak jak mówiłeś(Fidel) niestety nadal nie działa.
Może coś jest w tych plikach zwalone?
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Wto 23:19, 06 Cze 2006    Temat postu:

jesli tak to juz bledy nie wynikajace z tego ze klasy sa w roznych plikach - ja nie mam allegro wiec nie mam jak tego skompilowac a do czwartku nie znajde czasu zeby z czyms takim pobawic
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Pawel Str.
pijak



Dołączył: 06 Lut 2006
Posty: 429
Przeczytał: 0 tematów

Skąd: Ze starszego roku / Z Gorlic

PostWysłany: Czw 15:44, 08 Cze 2006    Temat postu:

Tak ogólnie, to w programie jest kilka błędów.

Po pierwsze - funkcja itoa. U mnie takiej nie ma; funkcję updateLives() przerobiłem tak:
Kod:

void updateLives()
{
    char tempStr[2];
    tempStr[1]='\0';
    tempStr[0]=(myShip.GetLives()%10)+'0';
    textout( buffer, font, tempStr, 70, 460, makecol( 255, 0, 0));
}


Po drugie - u mnie w allegro nie ma funkcji textout_ex.
W main.cpp jest ona wywoływana bodajże 4 razy, zastąpiłem ją wywołaniem funkcji textout. Musiałem do tego wywalić ostatni parametr, czyli makecol(0,0,0);

Po trzecie - nie wolno kasować tablic tworzonych automatycznie. Dlatego pod koniec main.cpp usunąłem
Kod:
delete [] myEnemies;
-to akurat nie powodowało błędu kompilacji, tylko SEGV przy zakończeniu programu.

A co do samej kompilacji: allegro ma dosyć złożone flagi, które trzeba dołączyć. Pod linuksem jest do tego dołączany skrypcik allegro-config, który z odpowiednim parametrem wypluwa flagi, jakie należy przekazać. Nie wiem, czy pod Windows też jest. Mój Makefile wygląda tak:

Kod:
CC = g++
CCFLAGS = -Wall -W -O2 -g
LIBFLAGS = $(shell allegro-config --shared)


spacefight: Character.o Ship.o Laser.o main.o
   $(CC) Character.o Ship.o Laser.o main.o $(LIBFLAGS) -o spacefight

Character.o: Character.cpp Character.h
   $(CC) $(CCFLAGS) -c Character.cpp

Ship.o: Ship.cpp Ship.h Character.h
   $(CC) $(CCFLAGS) -c Ship.cpp

Laser.o: Laser.cpp Ship.h Character.h
   $(CC) $(CCFLAGS) -c Laser.cpp

main.o: main.cpp Character.h Ship.h Laser.h
   $(CC) $(CCFLAGS) -c main.cpp

.PHONY: clean

clean:
   rm -f *o spacefight



Jeżeli z tym skryptem allegro-config będą jakieś problemy, to linię
Kod:
LIBFLAGS = $(shell allegro-config --shared)

zamień na:
Kod:
LIBFLAGS=-L/usr/lib -s -Wl,-export-dynamic -lalleg-4.0.3 -lalleg_unsharable

(numerek wersji dopasuj, a po -L daj ścieżkę do bibliotek allegro (zamiast /usr/lib).

A co do samej kompilacji:
Ogólnie idea jest taka: albo każemy kompilatorowi wszystko zbudować od razu, komendą typu
Kod:
g++ *cpp
,
albo kompilujemy kawałkami.
Flaga -c dla gcc/g++ oznacza, że ma nie linkować pliku, czyli nie szukać odwołań do bibliotek ani funkcji main().

Tak kompilowane są kawałki: Ship, Character, main, Laser
Potem to wszystko składa się do kupy, dołączając biblioteki (normalnie powinno się chyba użyć linkera, ld, ale g++ sam go wywoła). Taką metodę stosuje ten Makefile, który wysłałem.

--
WAŻNE:

zapomniałem dodać, że te wcięte linie zawierające instrukcje kompilacji muszą być wcięte tabulatorem. Spacje nie zadziałają.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
AMD
pijak



Dołączył: 05 Mar 2006
Posty: 161
Przeczytał: 0 tematów


PostWysłany: Czw 19:21, 08 Cze 2006    Temat postu:

Dzięki za pomoc .Szkoda tylko że nie da sie tego zkompilowac bez makefile'a
Co do funkcii itoa to ta funkcja zamienia stopnie na specjalny kąt w allegro.
(przynajmniej w tutorialu pokazywali ze z tego nalezy korzystać)
Co do textout_ex to wg mnie jest lepsze od samego textout bo moge sobie dobrac kolor tła pod literki a po zatym nie wiem dlaczego jak korzystam z textout to mi dziwne warring'iwyskakuja.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Czw 19:30, 08 Cze 2006    Temat postu:

Nam tez warninigi przy textoucie wyskakiwaly. Nie przejmuj sie, po prostu olej :)
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin