11

私は Allegro 5 から始めていますが、すぐにコーディングしている 2 番目の hello-world のようなプログラムで行き詰まりました。いくつかのデバッグの後、関数を呼び出すとプログラムがクラッシュするという結論に達しましたal_clear_to_color(ALLEGRO_COLOR)。allegro を静的および動的にリンクしようとしましたが、問題はまだ残っています。私は完全に迷っています。

コードは次のとおりです。

#include <cstdio>
#include <allegro5/allegro.h>

int main() {
    ALLEGRO_DISPLAY         *display;
    ALLEGRO_KEYBOARD_STATE  kbState;

    if(!al_init())
        return 0;

    if(!al_install_keyboard())
        return 0;

    display = al_create_display(800, 600);
    if(!display)
        return 0;

    do {
        al_get_keyboard_state(&kbState);

        al_clear_to_color(al_map_rgb(255, 255, 255));

        al_flip_display();

        al_rest(0.5);
    } while(!al_key_down(&kbState, ALLEGRO_KEY_ESCAPE));

    al_destroy_display(display);

    return 0;
}

編集:

行の置き換え

al_clear_to_color(al_map_rgb(255, 255, 255));

ラインのために

al_clear_to_color(tempClearColor);

宣言する

ALLEGRO_COLOR tempClearColor = al_map_rgb(255, 255, 255);

ループが開始する前は機能しますが、関数が実行されるとクラッシュします

al_destroy_display(display);

と呼ばれます。

デバッガーは次のメッセージを返します。

C:\Program Files (x86)\CodeBlocks\MinGW\bin\libstdc++-6.dll の共有ライブラリ シンボルの読み取り中にエラーが発生しました:
プログラムがシグナル SIGSEGV を受信しました。セグメンテーション違反です。

4

0 に答える 0