2

アレグロでゲームを書いていますが、いくつかの画像ファイルをロードしたいと思います。ただし、al_load_bitmapを呼び出すと、nullポインターが返されます。IDEとしてXCode4.1を使用しています。g ++を使用してコンパイルしようとしますが(パスの問題の場合)、g ++を使用してコマンドラインでコンパイルするために何をする必要があるのか​​わかりません(単にg ++ main.cppが機能しません)。とにかく、ここに私のコードがあります:

ALLEGRO_PATH *path = al_get_standard_path(ALLEGRO_RESOURCES_PATH);

for (int i = 0; i < NUM_TILES; i++)
{
    switch (static_cast<Tile>(i)) {
        case GRASS:
            al_set_path_filename(path, "grass.png");
            tileFiles[i] = al_load_bitmap(al_path_cstr(path, '/'));
            if (!tileFiles[i])
            {
                std::cerr<<"grass.png not initialized"<<std::endl;
            }
            break;
        case DIRT:
            al_set_path_filename(path, "dirt.png");
            tileFiles[i] = al_load_bitmap(al_path_cstr(path, '/'));
            if (!tileFiles[i])
            {
                std::cerr<<"dirt.png not initialized"<<std::endl;
            }
            break;
        default:
            std::cerr 
                << "Missing case statement for datatype Tile numbered at " 
                << i
                << " in Board::Board (float mw, float mh, int tst)"
                << " declared in Board.cpp."
                << std::endl;
            break;
    }
}

私はすでに実行しました:

if(!al_init_image_addon()) {
    al_show_native_message_box(display, "Error", "Error", "Failed to initialize al_init_image_addon!", 
                               NULL, ALLEGRO_MESSAGEBOX_ERROR);
    return -1;
}

そして私も入れました:

#include "allegro5/allegro_image.h"
#include "allegro5/allegro_native_dialog.h"

私のファイルの上部にあります。grass.pngもdirt.pngも読み込まれず、main.cppファイルとまったく同じディレクトリにあります。コンパイルエラーは発生しませんが、画像を読み込もうとすると常にnullポインターが表示されるため、画像をディスプレイに描画するときに表示されません。助けてください!

4

2 に答える 2

3

grass.pngもdirt.pngも読み込まれず、main.cppファイルとまったく同じディレクトリにあります

デバッグのヒント... の結果をal_path_cstr(path, '/')コンソールに出力すると、呼び出しが失敗した理由が非常に明白になります。

ALLEGRO_RESOURCES_PATHは「バンドルされたリソース」の場所で、OS X では実行可能ファイルのディレクトリを意味します。(アプリ バンドルを使用する場合は、バンドルのリソース フォルダーになります。) 簡単なチェックとして、実行可能ファイルがビルドされているのと同じディレクトリにイメージをコピーするだけです。

ほとんどの IDE は非常に奇妙なディレクトリ構造を持っています (IMO)。最終的には、次のようなものに構築するように設定します。

/src/main.c
/include/main.h
/obj/release
/obj/debug
/bin/game.exe
/bin/game-debug.exe
/bin/image.png

しかし、それは私の好みです。好きなものを使用しますが、ドキュメントをもう一度読んで、明らかになるさまざまな場所を明確に把握する必要がありますal_get_standard_path()

于 2012-06-08T13:15:12.367 に答える
0

さて、私は同じ問題を抱えていました、そして私は正しいディレクトリを探していて、プログラムのリソースがそこにあることを絶対に確信していました。al_path_cstr(path、'/')を使用しましたが、allegroの作業ディレクトリは期待どおりでした。次に、リソースファイルのサイズを確認しました。

ビルドディレクトリ内のすべてのリソースはゼロバイトでした。それらを自分でコピーすると、問題は解決しました。これが誰かの助けになることを願っています!

于 2012-12-30T03:32:07.777 に答える