Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Instalacja Allegro 5.0.10 w Code::Blocks 13.12

Ostatnio zmodyfikowano 2015-05-06 18:14
Autor Wiadomość
Expezo
Temat założony przez niniejszego użytkownika
Instalacja Allegro 5.0.10 w Code::Blocks 13.12
» 2015-05-01 19:34:53
Witam
Od jakiegoś czasu próbuję dodać Allegro do C++, robię wszystko jak należy i wyskakuje fatal error: "No such file or document". Nie mam pojęcia z czego to może wynikać, ale zauważyłem jedno: kiedy po pierwszej kompilacji (tej pustego pliku, żeby utworzyć folder bin>>Debug) wchodzę w bin>>Debug aby dodać dll-ki, nie ma tam nic. Na filmikach instruktażowych zauważyłem, że jest tam jakiś plik exe. Czy to może być przyczyną? Jeśli tak, to jak to naprawić? A jeśli coś innego, to o co chodzi?
P-131680
SeaMonster131
» 2015-05-02 10:27:20
robię wszystko jak należy i wyskakuje fatal error: "No such file or document".
Albo nie robisz jak należy albo masz inne nazwy plików niż w tutorialu.

że jest tam jakiś plik exe.
Obstawiam, że jest to po prostu skompilowana aplikacja. Ale Ty dostajesz błędy podczas kompilacji, więc i nie masz pliku exe.
P-131690
bingo009
» 2015-05-02 14:58:46
Nie musisz kopiować DLL do katalogu Bin/Debug. Wystarczy, że w opcjach projektu ustawisz opcję Working Dir na katalog, w którym masz DLL. Dzięki temu nie musisz niczego kopiować. Dobrze byłoby jakbyś opisał w krokach co robisz, wtedy moglibyśmy dokładnie zlokalizować błąd.
P-131697
Expezo
Temat założony przez niniejszego użytkownika
» 2015-05-02 16:21:06
Dzięki za odpowiedzi, sprawdziłem jeszcze raz wszystkie nazwy plików i się zgadzają, więc pewnie robię coś nie tak.
Idąc za radą, opiszę wszystkie kroki które robię począwszy od ściągnięcia i rozpakowania Allegro 5.0.10.

1. kopiuję zawartość folderu "include" w Allegro do "include" w MinGW Code::Blocks.

2. z folderu "lib" w Allegro biorę biblioteki: monolith-mt-debug.a i monolith-mt.a i wkładam do "lib" do MinGW Code::Blocks

3. Wchodzę w Code::Blocks w Projekt>>Opcje kompilacji>>Ustawienia linkera i dodaję "allegro-5.0.10-monolith-mt-debug" i  "allegro-5.0.10-monolith-mt" odpowiednio do debug i release.

4. tworzę nowy projekt w Code::Blocks, kompiluję pusty i dodaję pliki z folderu "bin" w Allegro: "allegro-5.0.10-monolith-mt.dll" i "allegro-5.0.10-monolith-mt-debug.dll" do katalogu bin>>Debug w folderze projektu. (tak pisało w poradniku :D o metodzie przez "Working dir" nie wiedziałem i do końca jej chyba nie ogarniam)

5. Wklejam do projektu przykładowy kod działający w Allegro, aby sprawdzić czy działa. I nie działa. W pierwszej linijce, przy "include <allegro5/allegro.h> wyskakuje fatal error:  No such file or directory.

Może ktoś coś zauważy :) Byłbym niezwykle wdzięczny, bo to moja ostatnia nadzieja... Dodam tylko, że identyczną metodą jakiś czas temu instalowałem Allegro w Code::Blocks w szkolnej pracowni i działało bez problemu :/
P-131699
bingo009
» 2015-05-05 00:46:23
No cóż, ja spróbowałem i mi się kompiluje. Zanim napisze ci jak to zainstalować dam ci jedną radę: Nigdy nie wklejaj bibliotek bezpośrednio do katalogów kompilatora. Robisz sobie tylko tym wielki bałagan i jak później będziesz chciał nowszą wersję biblioteki to będziesz znowu dodawał i przez to niepotrzebnie zwiększasz rozmiar katalogu kompilatora. Każdą bibliotekę trzymaj w osobnym katalogu z dala od katalogu kompilatora. Ja u siebie mam na dysku folder CPPLibraries, a w nim katalogi nazwane np. SFML2, Allegro5 itd, a w każdym z tych katalogów mam katalog bin, w którym są dll, katalog lib, w którym są pliki .a(ewentualnie .lib, jak ktoś korzysta z Visuala) i katalog include, w którym wiadomo co jest. Teraz jak to zainstalować, bo to cie chyba najbardziej interesuje:
1. Wypakowujesz sobie pobrane Allegro5 do jakiegoś katalogu

2. W CodeBlocks tworzysz sobie pusty projekt i dodajesz sobie do niego plik main.cpp, a w nim piszesz podstawowy kod sprawdzający(tutaj masz przykładowy, prosto z wiki allegro):
C/C++
#include <stdio.h>
#include <allegro5/allegro.h>

int main( int argc, char ** argv ) {
   
    ALLEGRO_DISPLAY * display = NULL;
   
    if( !al_init() ) {
        fprintf( stderr, "failed to initialize allegro!\n" );
        return - 1;
    }
   
    display = al_create_display( 640, 480 );
    if( !display ) {
        fprintf( stderr, "failed to create display!\n" );
        return - 1;
    }
   
    al_clear_to_color( al_map_rgb( 0, 0, 0 ) );
   
    al_flip_display();
   
    al_rest( 10.0 );
   
    al_destroy_display( display );
   
    return 0;
}

3. W CodeBlocks wybierasz Projekt-Opcje kompilacji i przechodzisz na zakładkę Lokalizacja bibliotek lub coś innego(mam CB po angielsku i nie wiem jak to jest po polsku, po angielsku jest to zakładka Serach directories, jest to zakładka 3 od lewej strony, zaraz po zakładce Ustawienia linkera).

4. Tam wybierasz zakładkę Kompilator(zakładki położone niżej pod zakładkami głównymi) i podajesz scieżkę do folderu include, który wypakowałeś w punkcie pierwszym. Wyskoczy okienko z pytaniem, na które odpowiadasz Nie. Potem zmieniasz zakładkę na Linker i robisz to samo, ale podajesz ścieżkę do folderu lib.

5. Z głównych zakładek wybierasz zakładkę Ustawienia linkera, po lewej stronie zmieniasz zaznaczenie na Debug(jak wyskoczy pytanie czy zapisać klikasz Tak), potem kilkasz Dodaj i wpisujesz w okienko liballegro-5.0.10-monolith-mt-debug.a . Zmieniasz po lewo zaznaczenie na Release, potwierdzasz zapisanie i robisz to samo, tylko w okienko wpisujesz biblioteke liballegro-5.0.10-monolith-mt.a . Klikasz Ok, potwierdzasz zapis i już możesz kompilować.

6. Teraz dll. Jak tworzysz jakiś projekt gry sugerowałbym utworzyć jej osobny katalog i skopiować tam dll z katalogu bin, ale jak piszesz dla nauki to możesz podać ścieżkę do katalogu bin. W drugiej zakładce niżej masz taką opcję jak Katalog roboczy lub coś podobnego i podajesz w nim ścieżkę do katalogu, który ma potrzebne pliki dll. Na pytanie odpowiadasz Nie i to wszystko.

Powyższa receptura jest oczywiście pasująca do wszystkich bibliotek c++. Ustawiasz ścieżki, patrzysz w manualu jakie biblioteki musisz dołączyć i robisz reszte analogicznie. Sam tak instaluje wszystkie biblioteki, pomaga to zachować porządek. Analogicznie sprawa wygląda też w CodeBlocks na Linuksie, tylko, że tam z wiadomych względów nie dodaje się dll.
P-131784
Expezo
Temat założony przez niniejszego użytkownika
Udało się!!!
» 2015-05-06 18:14:28
O kurczę, panie bingo009, jesteś naprawdę wielki! Nie masz pojęcia jak się cieszę, śmieję się do monitora i skaczę na krzesełku jak małe dziecko.Dziękuję niewymownie i pozdrawiam serdecznie. Dzięki też za radę dot. bibliotek, myślę, że wiele osób z niej skorzysta a ja na pewno. No to cóż, temat zamykam, chyba wszystko zostało już powiedziane. Jeszcze raz wielkie dzięki i cóż... może kiedyś będę miał okazję się odwdzięczyć :)
P-131819
« 1 »
  Strona 1 z 1