![](/img/trans.png)
[英]How to compile Allegro 5 program with GCC using only C programming language
[英]The executable only work when open by Terminal C Allegro
我有一個很奇怪的問題,我正在開發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;
}
但是,我對XCode或Mac也不是很熟悉,這看起來像是我過去使用Visual Studio時遇到的一個非常普遍的問題:
當您從調試器或在IDE的環境中執行程序時,IDE從與二進制文件所在目錄不同的目錄(例如,項目/解決方案文件所在的目錄)啟動該程序。 這樣,當您嘗試查找圖像時,它會失敗,因為它不在文件夾中。
嘗試將圖像移動到該應用程序的項目文件附近或工作空間中的其他目錄內部,直到加載為止,或者在代碼編輯器中修改環境變量,以使二進制文件的啟動文件夾成為您存儲圖像的文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.