|
Informatyka UJ forum Rocznik 2005 - czyli najlepsze forum w sieci
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
AMD
pijak
Dołączył: 05 Mar 2006
Posty: 161
Przeczytał: 0 tematów
|
Wysł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 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
|
Wysł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 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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
AMD
pijak
Dołączył: 05 Mar 2006
Posty: 161
Przeczytał: 0 tematów
|
Wysł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 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
|
Wysł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 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
|
Wysł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 ,
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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
AMD
pijak
Dołączył: 05 Mar 2006
Posty: 161
Przeczytał: 0 tematów
|
Wysł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 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?
|
Wysł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 |
|
|
|
|
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
|