2

デバッグ フォルダに「x.bmp」という名前の 114x114 ビットマップがあり、この単純なコードがあります。

#include <allegro.h>

BITMAP *Sprite;

int main(){
    allegro_init();
    install_keyboard();
    set_color_depth(16);
    set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0);

    Sprite = load_bitmap( "x.bmp", NULL);

    acquire_screen();
    draw_sprite(screen, Sprite, 50, 50);
    release_screen();

    readkey();

    return 0;

}   
END_OF_MAIN();

でもフリーズするとこんな感じに フリーズした画面

しかし、AllegroTest.exeWindowsエクスプローラーでファイルを実行するだけで動作します...

Allegro 4.2.3 と MSVC++ 2008 を使用しています

編集:デバッグ出力ウィンドウに興味深いものがあります:

al-gfx INFO: The driver will wait for vsync.
al-gfx INFO: set_gfx_card success for 640x480x16.
Assert failed at line 250 of c:\users\matthew\desktop\allegro\4.2\include\allegro\inline\draw.inlThe thread 'Win32 Thread' (0x137c) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0x25b8) has exited with code -805306369 (0xcfffffff).

c:\users\matthew は存在しません!!! マシューという名前のユーザーはいませんか?

4

1 に答える 1

4

ビットマップを読み込めない可能性があります。

Visual Studio デバッガーからアプリケーションを起動する場合、既定の作業ディレクトリはプロジェクト ディレクトリです。エクスプローラー経由でアプリケーションを起動すると、作業ディレクトリは実行可能ファイルがあるディレクトリになります。通常、プロジェクト ディレクトリは...\SolutionName\ProjectName\になります。

相対パスを指定すると、つまりx.bmp、アプリケーションは作業ディレクトリを検索し、続いて PATH 環境変数にリストされているディレクトリなどの他のディレクトリを検索します。可能であれば、通常は絶対パスを指定することをお勧めします。

ほとんどの場合、イメージ ファイルは実行可能ファイルと同じディレクトリにありますが、このディレクトリはプロジェクト ディレクトリではありません。

于 2011-04-23T00:00:58.020 に答える