【问题标题】:The executable only work when open by Terminal C Allegro可执行文件仅在终端 C Allegro 打开时有效
【发布时间】:2015-09-03 03:37:15
【问题描述】:

我有一个非常奇怪的问题,我正在开发 Allegro 游戏,我在终端上编译并在 XCode Code Viewer(它就像一个文本编辑器)上编译代码,一切都很顺利,但是当我加载图像并运行时单击可执行文件给我错误“无法加载图像”,有趣的事实是,当我通过终端(./executablename)打开可执行文件时,它完全按照它应该的方式工作!我真的不明白为什么,有人告诉我错误可能与权限有关,但我对mac不太了解......并且不知道如何解决它。

这是我的代码:

#include <stdio.h>

//puxa a biblioteca allegro
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#include <allegro5/allegro_image.h>

//fixo de tamanho de tela
#define LAR 1280
#define ALT 720

int main(int argc, char *argv[]){
    //inicialização da janela
    ALLEGRO_DISPLAY *janela = NULL;

    ALLEGRO_BITMAP *imagem = NULL;

    //inicia allegro, caso erro da a msg
    if(!al_init()) {
        fprintf(stderr, "failed to initialize allegro!\n");
        return -1;
    }

    al_get_standard_path(ALLEGRO_RESOURCES_PATH);

    //cria a janela
    janela = al_create_display(LAR, ALT);
    if(!janela) {
        fprintf(stderr, "failed to create display!\n");
        return -1;
    }

    //inicia primitivos
    //al_init_primitives_addon();

    //inicia a extenção de imagens
    if(!al_init_image_addon()){
        fprintf(stderr, "Falha ao carregar image addon");
    }

    //carrega imagem
    imagem = al_load_bitmap("imagem.jpg");
    if (!imagem){
        fprintf(stderr, "Falha ao carregar imagem!\n");
        return -1;
    }

    //preenche a tela com alguma cor
    al_clear_to_color(al_map_rgb(0,0,0));

    //desenha imagem
    al_draw_bitmap(imagem, LAR/2 - (al_get_bitmap_width(imagem)/2),
                   ALT/2 - (al_get_bitmap_height(imagem)/2), 0);

    //atualiza a tela
    al_flip_display();

    //pausa a execução
    al_rest(10.0);

    //destroi imagem
    al_destroy_bitmap(imagem);

    //destroi variavel janela
    al_destroy_display(janela);

    return 0;
    }

【问题讨论】:

    标签: c image macos terminal allegro


    【解决方案1】:

    我对 XCode 或 mac 也不是很熟悉,但是……这看起来像是我过去在 Visual Studio 中遇到的一个很常见的问题:

    当您从调试器或 IDE 环境中执行程序时,IDE 从与二进制文件所在目录不同的目录启动程序(例如,项目/解决方案文件所在的目录)。这样当您尝试定位图像时,它会失败,因为它不在文件夹中。

    尝试在该应用程序的项目文件附近或工作区的其他目录中移动图像直到它加载,或在代码编辑器中修改环境变量,以便二进制文件的启动文件夹是您存储图像的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      • 2017-06-22
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多