![]() |
|
Allegro ni Ima High Sierra |
jamdesalles
Member #16,737
September 2017
|
Acabei de instalar o Allegro 5 no meu Imac High Sierra ! Realmente o 5 é muito diferente do 4 que conheço bem. Estou apanhando muito com o 5, após passar por uma serie de problemas apareceu este que não consigo sai ! Alguém pode me dar uma luz ! Segue abaixo o erro e o fonte que estou escrevendo ! Lembrando que não sei por qyê aparece um tradutor de texto que altera o que envio, por exemplo aonde se lê retorna ; é "return;" e outros também, porém o código esta correto ! Obrigado ! Estou parado e um cliente me cobrando muito ! bicho.c:89:32: erro: declarador de parâmetro esperado Segue a fonte! #include<allegro5/allegro_font.h>
#include<allegro5/keycodes.h> #define FUNDO 1 void init(void); // inicia Allegro typedef struct ALLEGRO_DISPLAY *video; char *dsp = ".."; void init (void) ALLEGRO_DISPLAY *vídeo(1280,1024); // ALLEGRO_DISPLAY *vídeo = NULL; printf("Criar video /n"); if(!al_init()) // video = al_create_display (1280, 1024); if (!*video) al_show_native_message_box(NULL, "Mensagem", "Ok!: ", Retorna ; Como pode notar ele altera mesmo eu escrevi return; e não retorna; Tudo parece estar ok agora, porem não consigo encontrar a biblioteca allegro_ttf, no linker ele acusa como not found e não consigo encontra-la ! Tem alguma ideia ? |
DanielH
Member #934
January 2001
![]() |
Você só precisa incluir allegro5\allegro5.h para a biblioteca principal e o cabeçalho para cada módulo que você usa: allegro5\allegro_native_dialog.h, allegro5\allegro_font.h, ... <code> o código vai aqui para formatar corretamente </code> /*typedef struct*/ ALLEGRO_DISPLAY *video = NULL; video = al_create_display(1280,1024); //if (!*video) if (!video)
// Como usar typedef // typedef (tipo_definido) (novo_tipo); typedef int meu_tipi_inteiro; meu_tipo_inteiro i = 5; // o typedef struct ALLEGRO_DISPLAY* Poppy; Poppy video = NULL;
|
jamdesalles
Member #16,737
September 2017
|
Daniel ! Obrigado pela ajuda, agora em tempo de linker está acontecendo isso : Lembrando Allegro 5 no Imac High Sierra ! Segue o makefile ! No Linux eu usava o Allegro 4, o 5 é novidade para mim e estou tentando portar para o MacOs os aplicativos porem o Allegro 4 não é suportado no High Sierra ! segue o makefile ! CC = gcc all: bicho bicho: $(OBJECTS) .SUFFIXES: .c.o : count: clean: .PHONY: all Estou portando os aplicativos do Linux para o Macos, porem no High Sierra o Allegro 4 não é suportado por este motivo estou usando o Allegro 5 que é bem diferente do Allegro 4 ! Obrigado ! |
DanielH
Member #934
January 2001
![]() |
Ignore os avisos sobre argc e argv o nome da função está incorreto O caminho para os arquivos de biblioteca está incorreto. É por isso que make não conseguiu encontrá-los. ou a biblioteca não está lá |
jamdesalles
Member #16,737
September 2017
|
Daniel ! Obrigado ! corrigi o create ! você fala do :LDFLAGS = -Wl,-rpath, /usr/local/lib, verifiquei no /usr/local/lib e as bibliotecas estão lá, a não ser que tenha algo errado no LDFLAG0S = -Wl, -rpath ? Este tradutor : c o r r i g i - o - c r e a t e ! Evoluindo !!! Agora : Quando do al_creste :Segmentation fault: 11 Corrigi ! Faltava inicializar o Allegro ! Obrigado ! Até o proximo pepino ! Consegui evoluir muito !Agora restou um problema no linker : MacBook-Air-de-User:bicho maphiaimac$ make Acredito que esteja faltando uma biblioteca liga ao allegro_font ! Te peço mais esta ajuda ! ele não encontra a biblioteca allgro_ttf no acima não aparece mais descobri que estava faltando e a inclui ! Tem alguma ideia ? |
Ariesnl
Member #2,902
November 2002
![]() |
Ja, hoor eens even. Als we hier allemaal in onze eigen taal gaan ouwehoeren, kan niemand meer iets volgen. "Doe daabse knien" Perhaps one day we will find that the human factor is more complicated than space and time (Jean luc Picard) |
Edgar Reynaldo
Major Reynaldo
May 2007
![]() |
Did you install pkg-config? Did you install allegro after pkg-config? pkg-config --list-all | grep allegro
My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
jamdesalles
Member #16,737
September 2017
|
executei o pkgconfig e não aparece o allegro_ttf, aparec todas as outras allegro_audio, allegro_codec etc... todas, menos a allegro_ttf |
Edgar Reynaldo
Major Reynaldo
May 2007
![]() |
Did you build allegro yourself? Homebrew should have included allegro_ttf addon by default. If not, there's something wrong with the homebrew package. My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
jamdesalles
Member #16,737
September 2017
|
Tem como baixar esta biblioteca, se sim onde ? Re-instalei o Allegro e continua não vindo a allegro_ttf ! Consegui baixar a biblioteca porem ela exige um link simbólico pois embora a biblioteca exista ele continua dando not found, acredito que seja a falta do link ! Agora o problema evoluiu, é na parte de audio : MacBook-Air-de-User:bicho maphiaimac$ make tenho um outro programa usando as mesmas funções e não da este problema no linker ! |
Edgar Reynaldo
Major Reynaldo
May 2007
![]() |
You have to link against Allegro. and allegro_main on OSX. I don't know why the TTF addon is missing. Hopefully Peter Hull can help you. My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
RmBeer2
Member #16,660
April 2017
![]() |
@jamdesalles: Para aprender te sugiero leer los ejemplos, compilarlos y ejecutarlos, y modificarlos. Y leer la guia para mayor detalle acerca de cualquier funcion. 🌈🌈🌈 🌟 BlackRook WebSite 🌟 C/C++ 🌟 GNU/Linux 🌟 IceCream/Cornet 🌟 🌈🌈🌈 Rm Beer for Emperor 2021! Rm Beer for Ruinous Slave Drained 2022! Rm Beer for Traveler From The Future Warning Not To Enter In 2023! Rm Beer are building a travel machine for Go Back from 2023! |
Peter Hull
Member #1,136
March 2001
|
I think you are nearly there but you need to understand what % pkg-config --cflags allegro-5 allegro_main-5 outputs -I/usr/local/Cellar/allegro/5.2.7.0/include and % pkg-config --libs allegro-5 allegro_main-5 outputs -L/usr/local/Cellar/allegro/5.2.7.0/lib -lallegro_main -lallegro You could take these options and type them into your Makefile but normally people use the back-ticks which "means run this program and replace with whatever the output is." In your Makefile you have CFLAGS = -g -Wall -Wextra `pkg-config --cflags lallegro lallegro_main lallegro_font lallegro_dialog` This is wrong because 'lallegro' is not a package name, nor are the others. It should be: CFLAGS = -g -Wall -Wextra `pkg-config --cflags allegro-5 allegro_main-5 allegro_font-5 allegro_dialog-5` This becomes just -I/usr/local/Cellar/allegro/5.2.7.0/include and you do not also need INCFLAGS in your Makefile. Also you have LIBS = -lallegro -lallegro_font -lallegro_main -lncurses -lmysqlclient -lallegro_primitives -lallegro_image -lallegro_font -lallegro_dialog LDFLAGS = -Wl,-rpath,/usr/local/lib This is a job for pkg-config! LIBS = `pkg-config --libs allegro-5 allegro_main-5 allegro_font-5 allegro_dialog-5` which becomes -L/usr/local/Cellar/allegro/5.2.7.0/lib -lallegro_main -lallegro_font -lallegro_dialog -lallegro On the linker line, make has some pre-defined variables to help you: LINK.o is the correct command for linking .o files. @ means the target (bicho in this case) and < means the input files ($(OBJECTS) in this case) Putting it together I would write your makefile as CFLAGS = -g -Wall -Wextra `pkg-config --cflags allegro-5 allegro_main-5 allegro_font-5 allegro_dialog-5` OBJECTS = bicho.o LDLIBS = `pkg-config --libs allegro-5 allegro_main-5 allegro_font-5 allegro_dialog-5` all: bicho bicho: $(OBJECTS) $(LINK.o) -o $@ $< $(LDLIBS) count: wc *.c *.cc *.C *.cpp *.h *.hpp clean: rm -f *.o .PHONY: all .PHONY: count .PHONY: clean
EDIT same thing with Google translate Eu acho que você está quase lá, mas você precisa entender o propósito de % pkg-config --cflags allegro-5 allegro_main-5 -I/usr/local/Cellar/allegro/5.2.7.0/include % pkg-config --libs allegro-5 allegro_main-5 -L/usr/local/Cellar/allegro/5.2.7.0/lib -lallegro_main -lallegro Você pode pegar essas opções e digitá-las em seu Makefile, mas normalmente as pessoas usam os back-ticks que "significa executar este programa e substituir por qualquer que seja a saída". No seu Makefile você tem CFLAGS = -g -Wall -Wextra `pkg-config --cflags lallegro lallegro_main lallegro_font lallegro_dialog` Isso está errado porque 'lallegro' não é um nome de pacote, nem os outros. Deveria ser: CFLAGS = -g -Wall -Wextra `pkg-config --cflags allegro-5 allegro_main-5 allegro_font-5 allegro_dialog-5` Isso se torna apenas -I/usr/local/Cellar/allegro/5.2.7.0/include e você também não precisa de INFLAGS em seu Makefile. Você também tem LIBS = -lallegro -lallegro_font -lallegro_main -lncurses -lmysqlclient -lallegro_primitives -lallegro_image -lallegro_font -lallegro_dialog LDFLAGS = -Wl,-rpath,/usr/local/lib Este é um trabalho para pkg-config! LIBS = `pkg-config --libs allegro-5 allegro_main-5 allegro_font-5 allegro_dialog-5` que se torna -L/usr/local/Cellar/allegro/5.2.7.0/lib -lallegro_main -lallegro_font -lallegro_dialog -lallegro Na linha do linker, o make tem algumas variáveis pré-definidas para ajudá-lo: LINK.o é o comando correto para vincular arquivos .o. `@` significa o destino (`bicho` neste caso) e `<` significa os arquivos de entrada (`$(OBJECTS)` neste caso) Juntando eu escreveria seu makefile como CFLAGS = -g -Wall -Wextra `pkg-config --cflags allegro-5 allegro_main-5 allegro_font-5 allegro_dialog-5` OBJECTS = bicho.o LDLIBS = `pkg-config --libs allegro-5 allegro_main-5 allegro_font-5 allegro_dialog-5` all: bicho bicho: $(OBJECTS) $(LINK.o) -o $@ $< $(LDLIBS) count: wc *.c *.cc *.C *.cpp *.h *.hpp clean: rm -f *.o .PHONY: all .PHONY: count .PHONY: clean
|
|