Stare, dobre "Program przestał działać" :)

0

No więc jak zawsze, wie ktoś dlaczego? Dzięki z góry ;)

#include <stdio.h>
#include <allegro5/allegro.h>
#include <allegro5/allegro_native_dialog.h>
#include <allegro5/allegro_primitives.h>
   
using namespace std;
int main(int argc, char **argv)
{
	ALLEGRO_DISPLAY *display = NULL;
   al_set_new_display_flags(ALLEGRO_NOFRAME);
 
   if(!al_init()) {
      al_show_native_message_box(NULL, "Error!", "Failed to initialize allegro.", 0, 0, ALLEGRO_MESSAGEBOX_ERROR);
      return -1;
   }
   if(!al_init_primitives_addon()) {
   	al_show_native_message_box(NULL, "Error!", "Failed to initialize primitives addon.", 0, 0, ALLEGRO_MESSAGEBOX_ERROR);
      return -1;
   }
   if(!al_install_keyboard()) {
   	al_show_native_message_box(NULL, "Error!", "Failed to install keyboard.", 0, 0, ALLEGRO_MESSAGEBOX_ERROR);
      return -1;
   }
   ALLEGRO_KEYBOARD_STATE key_state;
 
   display = al_create_display(768, 540);
   if(!display) {
      al_show_native_message_box(NULL, "Error!", "Failed to create display.", 0, 0, ALLEGRO_MESSAGEBOX_ERROR);
      return -1;
   }
   
   while(al_key_down(&key_state, ALLEGRO_KEY_ESCAPE)) 
   {
	al_clear_to_color(al_map_rgb(0,171,169));
   
   al_draw_line(0, 60, 768, 60, al_map_rgb(255,255,255), 1);
   al_draw_filled_circle(200, 200, 5, al_map_rgb(255,255,255));
 
   al_flip_display();
   al_get_keyboard_state(&key_state);
   }
   al_destroy_display(display);
 
   return 0;
} 

P.S. Nawet przy prostszym kodzie mi wywala:

#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(3.0);
 
   al_destroy_display(display);
 
   return 0;
} 
0

U mnie działa dobrze oprócz tego że okno wcale się nie pokazuje ale jak mam zgadywać to może nie masz w katalogu z programem dll odpowiednich ??

cóż u mnie
user image
jest OK

0

Mam i allegro_dialog-5.0.4-mt.dll, i allegro-5.0.4-monolith-mt.dll, i allegro_primitives-5.0.4-mt.dll, czyli pełen zestaw dla tego kodu, poza tym podczas uruchamiania przed Dev-C++ używa on swoich własnych dll-ek w swoim katalogu. :)

0

A jaki plik linkujesz statycznie? Chodzi mi o nazwę.

0

-lallegro-5.0.4-monolith-mt -lshlwapi

0

Ok to jaki masz system operacyjny ?? ilu bitowy?

0

Win 8 x64, też się zastanawiałem, czy to może stwarzać błędy, w razie czego jutro przetestuję na jakimś starszym :)

0

Czy wszystkie ddl przekopiowałeś do folderów systemowych czy tylko dołączasz te co trzeba do konkretnego projektu?

0

Na wszelki wypadek i to i to...

0

Wyśli całą paczkę z biblioteką spróbuje u siebie .

0

P.S. Allegro instalowałem przez repozytorium (Dev 4.9.9.2)
P.S.2 Dzięki za zainteresowanie. :D

0

A biblioteka wiesz lib'y includ'y itd.Bez nich nie wiele mogę.Choć zachęcam do instalacji nowszej wersji allegro 5

0

Jak mówiłem wszystko z DevPaks (http://devpaks.org/details.php?devpak=307), więc nie chciałem już tego znowu pakować i wrzucać :)

Aaa, czekaj, bo ty masz nowszą wersję i jak zainstalujesz to to ci podmieni pliki na starsze... Chwila...

0

To ma 40Mb, więc trochę to zajmie przy moim łączu :/

0

Odezwę się jak rozgryzę problem.

0
  1. Próbujesz wykonać al_set_new_display_flags(ALLEGRO_NOFRAME); a display nie jest jeszcze zainicjalizowany.
  2. ALLEGRO_KEYBOARD_STATE key_state; to nie jest zainicjalizowane kiedy wykonujesz al_key_down(&key_state, ALLEGRO_KEY_ESCAPE). Daj przed pętlą
    al_get_keyboard_state(&key_state);

Jeszcze możesz spróbować uruchomić nie przez IDE. tzn. uruchom wygenerowanego exeka. Ja mam taki sam problem, gdy uruchamiam przez IDE program używający allegro 5.
Jeśli to nie zadziała to podaj dokładny kod błędu.

btw. co ci zajmuje aż te 40mb? może nie wszystko potrzebujesz

@Edit. jeszcze pare rzeczy
Allegro 5.0.9 jest nowsze, przy nim możesz nie mieć problemów. Mi się udało na nim odpalić.
Dodatkowo nie polecam Deva, szczególnie 4.9.9.2, jest przestarzały.

0
 #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(3.0);
 
   //al_destroy_display(display);
 
   return 0;
}

Więc nie wywala błędu gdy kasowanie okna jest w komentarzu czyli po prostu gdy nie niszczymy okna lecz czemu nie mam pojęcia może bug biblioteki . Zainstaluj jakąś nowszą może to pomoże.

EDIT Faktycznie patrz post wyżej , nie ustawiasz flag okna;

0

Tak, to może być to, jednak u siebie na kompie już tak pokręciłem, że teraz wywala mi, że podczas kompilacji g++ przestał działać :) Muszę przeinstalować Dev-a.

0

Udało się, usunąłem Dev-a, na wszelki wypadek Dokładnie wyczyściłem dysk ze wszelkich pozostałych po nim plików i wszystko postawiłem od nowa, tym razem z Allegro 5.0.10. Jak ręką odjął :) Nie wiem co było przyczyną (raczej nie błędy w plikach, bo kilka razy usuwałem wszystko i instalowałem, ale wtedy jeszcze z Allegro 5.0.4). Podejrzewam, że ta wersja jakoś nie współgrała z Win8 bo na Win7 ją miałem i wszystko śmigało. W każdym razie dziękuję wszystkim za pomoc :D

P.S.
@Sopelek,

  1. Próbujesz wykonać al_set_new_display_flags(ALLEGRO_NOFRAME); a display nie jest jeszcze zainicjalizowany.

Robiłem dobrze, bo al_set_new_display_flags() przypisujemy do wcześniej zadeklarowanego ALLEGRO_DISPLAY *display = NULL;, a dopiero potem inicjalizujemy okienko, inaczej flagi nie zadziałają.

P.S.2 Jeszcze raz wielkie dzięki :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1