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

Code Blocks allegro 5,Assertion failed: bitmap

Ostatnio zmodyfikowano 2016-06-04 20:39
Autor Wiadomość
j23
» 2016-05-29 10:16:49
test jaką ma wartość?
P-148668
Nekronomik
Temat założony przez niniejszego użytkownika
» 2016-05-29 14:10:36
Więc tak, przy call stack podkresla mi linie z opcje.h
#0 0x42e99d Opcje::fps(this=0x48b040 <opcje>) (C:/Users/Senatek/Desktop/test/hmm/opcje.h:69)
#1 0x401f35 main() (C:\Users\Senatek\Desktop\test\hmm\main.cpp:246)
 mimo że tą linie za komentuję to i tak się jej czepia
cout<<"Czas (s) : "<<czas_rzeczywisty<<" | petla zewnetrzna : "<<fps_p_z<<" | petla wewnetrzna : "<<fps_p_w<<" | na 1 fps : "<<fps_p_z/fps_p_w<<" fps zapasu"<<endl;
Przy debugowaniu, na tej linijce program przestaje odpowiadać.
Tak jak pisałem wcześniej plik .exe działa, żadnych błędów i problemów nie ma i to kompilowany przez code blocks ^.


P-148680
j23
» 2016-05-29 19:09:32
Pokaż zawartość Opcje::fps.
P-148700
Nekronomik
Temat założony przez niniejszego użytkownika
» 2016-05-29 22:13:06
C/C++
class Opcje
{
public:
    int r_x;
    int r_y;
    double czas_rzeczywisty;
    //double fps;
    double czas;
    double czas_2;
    int fps_p_w;
    int fps_p_z;
    bool mysz;
    bool klawiatura;
    double kamera_x;
    double kamera_y;
    string haslo;
    char znaki_haslo[ 32 ];
    string login;
    char znaki_login[ 32 ];
    bool logowanie;
    int znaki_ilosc;
    Opcje()
    {
        //fps=0.02;
        czas = 0.0;
        czas_2 = 0.0;
        fps_p_w = 0;
        fps_p_z = 0;
        mysz = false;
        klawiatura = false;
        kamera_x = 0;
        kamera_y = 0;
        znaki_ilosc = 32;
        logowanie = false;
    }
    void znaki_reset()
    {
        for( int a = 0; a < znaki_ilosc; a++ )
        {
            znaki_haslo[ a ] = '?';
            znaki_login[ a ] = '?';
        }
    }
    void rozdzielczosc( int numer )
    {
        switch( numer )
        {
        case 1:
            r_x = 640; r_y = 480;
            break;
        case 2:
            r_x = 900; r_y = 800;
            break;
        }
    }
    void czas_start( double allegro_czas )
    {
        czas_rzeczywisty = allegro_czas;
        fps_p_z++;
    }
    bool fps()
    {
        if( czas_rzeczywisty >= czas_2 + 1 )
        {
            cout << "Czas (s) : " << czas_rzeczywisty << " | petla zewnetrzna : " << fps_p_z << " | petla wewnetrzna : " << fps_p_w << " | na 1 fps : " << fps_p_z / fps_p_w << " fps zapasu" << endl;
            czas_2 = czas_rzeczywisty;
            fps_p_z = 0;
            fps_p_w = 0;
        }
        if( czas_rzeczywisty >= czas + 0.01666 )
        {
            czas = czas_rzeczywisty;
            fps_p_w++;
            return true;
        }
        return false;
    }
};
Opcje opcje;
P-148705
j23
» 2016-05-30 11:13:00
Coś chyba źle odczytałeś z tego call stack, bo klasa Opcje ma się nijak do allegro i asercji, o której była mowa na początku.
P-148719
Nekronomik
Temat założony przez niniejszego użytkownika
» 2016-05-30 21:07:00
Call stack'iem nic nie sprawdze z tego co ja widze, wywala mi exe i woła dysku ^
Z ciekawości zrobiłem test z innym kodem skopiowanym z netu
C/C++
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>
int main()
{
    al_init();
    al_install_keyboard();
    al_init_image_addon();
    ALLEGRO_KEYBOARD_STATE klawiatura;
    ALLEGRO_DISPLAY * okno = al_create_display( 320, 240 );
    al_set_window_title( okno, "Allegro5 kurs pierwsze okno" );
    ALLEGRO_BITMAP * obrazek = al_load_bitmap( "1.png" );
    while( !al_key_down( & klawiatura, ALLEGRO_KEY_ESCAPE ) )
    {
        al_get_keyboard_state( & klawiatura );
        al_clear_to_color( al_map_rgb( 0, 255, 0 ) );
        al_draw_bitmap( obrazek, 0, 0, 0 );
        al_flip_display();
    }
    al_destroy_display( okno );
    al_destroy_bitmap( obrazek );
   
    return 0;
}
Jest ten sam problem
Call stack w tym przypadku nawet nie reaguje.
kod z błędem w konsoli:
Assertion failed: bitmap, file d:\Libraries\build\allegro\src\allegro-git\allegro-git\src\bitmap_draw.c, line 138

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
A plik exe normalnie się odpala.
P-148743
1aam2am1
» 2016-05-30 23:12:10
Możesz uruchomić jeszcze raz ten program i zobaczyć na co wskazuje obrazek?

Edit.
C/C++
ALLEGRO_BITMAP * obrazek = al_load_bitmap( "1.png" );
Jaką wartość ma obrazek bo z twoich wszystkich komentarzy wynika, że program nie wczytuje poprawnie plików gdy jest uruchamiany przez Code::Blocks.
A uruchamia się i działa gdy jest uruchomiony ręcznie.
Rozwiązanie jest proste program po odpaleniu przez program ma inną "Execution working dir".
O ile znam projekty Code::Block program znajduje się w folder_projektu\bin\Release\program.exe, a ścieżka uruchomienia programu przez Code::Blocks to folder_projektu\.
A uruchomienia przez dwuklik to folder_projektu\bin\Release\program.exe. Więc aby rozwiązać twój program skopiuj fonta, bidmapy czy to co tam masz (włożyłeś do folderu) folder_projektu\bin\Release\ do folder_projektu.
P-148757
Nekronomik
Temat założony przez niniejszego użytkownika
» 2016-05-31 19:55:14
Nie bardzo rozumiem.
Trochę posiedziałem i przy sprawdzaniu kodu linijka po linijce za pomocą "Next line"
dostaję komunikat Cannot open file: d:\Libraries\build\allegro\src\allegro-git\allegro-git\src\system.c
At d:\Libraries\build\allegro\src\allegro-git\allegro-git\src\system.c:182
P-148779
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona