• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Quintal

Problemas allegro vs c++

15 mensagens neste tópico

Boa tarde eu sou aqui e ainda não tive muito tempo pa ler as regras do forum se este post não estiver no sitio certo peço desc.

http://www.trignosfera.pt/

O meu problema e fácil de explicar, eu quero correr um programa de c++ simples em MSDOS mas sempre que eu queira quero que ele inicie uma janela em allegro para que posso imprimir um gráfico este é o codigo que eu ja csg fazer mas tem dado smpre erros de compilação (este é o que da -)

#include <cstdlib>
#include <iostream>
#include <allegro.h>
using namespace std;


int main(int argc, char *argv[])
{   
    int on=0;
    cout<<"ligar allegro";
    cin>>on;
    
    if(on==1){
             allegro_init();
             set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0);
             set_color_depth(32);		         
        	 install_timer();
        	 install_keyboard();
        	 install_mouse();
        	 BITMAP* buffer = create_bitmap(640, 480);
             while (!key[KEY_ESC]) {
                              }
             clear_keybuf();
             destroy_bitmap(buffer);
             allegro_exit(); 
            }
    system("PAUSE");
    return EXIT_SUCCESS;
}
END_OF_MAIN();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Neste tipo de coisas deves sempre incluir também os erros logo no post inicial. O compilador C++ não tem nenhum erro "erros de compilação" :)

Copia para aqui os erros que estás a receber por favor. De outra forma trei que instalar o Allegro e não me está a apetecer muito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Erros ele ja me deu td o tipo e ja tentei fazer de maneiras diferentes esta deu erro de linkagem na maior parte das vezes noutro pc deu erros de sintaxe e noutro bloqueou o compilador.

As outras maneiras da erros dos mais estúpidos desde o não reconhecimento das funções até erros de variáveis não declaradas que estão declaradas.

Penso que se quiseres descobrir o erro ou que ta mal vais ter de instalar a allegro porque ja fartei me ver tutoriais e não falam desta maneira para usar a allegro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Compiler: Default compiler

Building Makefile: "D:\My Programs\FC\experiencia\Makefile.win"

Executing  make...

make.exe -f "D:\My Programs\FC\experiencia\Makefile.win" all

g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include" 

g++.exe main.o  -o "Project1gv.exe" -L"C:/Dev-Cpp/lib" 

main.o(.text+0x183):main.cpp: undefined reference to `set_gfx_mode'

main.o(.text+0x18f):main.cpp: undefined reference to `set_color_depth'

main.o(.text+0x194):main.cpp: undefined reference to `install_timer'

main.o(.text+0x199):main.cpp: undefined reference to `install_keyboard'

main.o(.text+0x19e):main.cpp: undefined reference to `install_mouse'

main.o(.text+0x1b2):main.cpp: undefined reference to `create_bitmap'

main.o(.text+0x1ba):main.cpp: undefined reference to `_imp__key'

main.o(.text+0x1c9):main.cpp: undefined reference to `clear_keybuf'

main.o(.text+0x1d4):main.cpp: undefined reference to `destroy_bitmap'

main.o(.text+0x1d9):main.cpp: undefined reference to `allegro_exit'

main.o(.text+0x1f7):main.cpp: undefined reference to `_get_allegro_version'

main.o(.text+0x20a):main.cpp: undefined reference to `get_config_text'

main.o(.text+0x21b):main.cpp: undefined reference to `_imp__allegro_error'

main.o(.text+0x223):main.cpp: undefined reference to `ustrzcpy'

main.o(.text+0x245):main.cpp: undefined reference to `_install_allegro'

main.o(.text+0x27c):main.cpp: undefined reference to `_WinMain'

collect2: ld returned 1 exit status

make.exe: *** [Project1gv.exe] Error 1

Execution terminated

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Espera csg por o a correr mas ele so faz a parte do system("PAUSE")

tens fazer new project allegro static copy past deste codigo ele compila

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

main.o(.text+0x183):main.cpp: undefined reference to `set_gfx_mode'

Isto são erros do linker. Não estás aparentemente a incluir a lib do allegro. Tens que linkar com esta lib. Verifica a documentação para saberes qual a lib a utilizar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ela ta incluída isso basta para funcionar

e cmo ja disse no ultimo post pelo menos no dvd c++ fazes new project-> escolhes allegro static-> ele abre uma folha ja com codigo apagas e fazes copy past deste codigo e não erros de linker mas não sei te explicar porque. Ag ele corre mas so lê/realiza o comando system("PAUSE"); e ignora o resto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
e não erros de linker mas não sei te explicar porque.

Porque nesse caso ele configura o teu projecto para usar a biblioteca Allegro e faz o link contra a lib do allegro. Hás-de notar que agora o teu comando de link é ligeiramente diferente de  g++.exe main.o  -o "Project1gv.exe" -L"C:/Dev-Cpp/lib". Já não me lembrava que o dev-c++ tenha esse tipo de projecto pre-configurado.

Ag ele corre mas so lê/realiza o comando system("PAUSE"); e ignora o resto

Pois. Mas aí já não sei. Talvez alguém aqui utilize a Allegro e te possa ajudar. Nunca a usei. No entanto o meu palpite é que a tua rotina para ler a tecla pressionada não tem efeito. Dei uma vista de olhos pela documentação e talvez seja isto que queres:

while ( readkey() != KEY_ESC );
clear_keybuf();

A função readkey() lê o caracter seguinte do buffer do teclado. Se não existir nada no buffer, espera até que alguma tecla seja premida.

EDIT: O manual que encontrei na web está aqui: http://mirror.bwpow.eu/pub/manuals/allegro/4.2.2/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao o que tas a dizer e que para por aquilo a não erros num projecto em c++ tenho que mexer nas definições do dvd c++ certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é dvd c++, é Dev-C++. Está lá escrito e tu estás a utilizá-lo aparentemente todos os dias. Portanto não custa nada dizer o nome correcto.

Sim. Mais ou menos. Terás que alterar as definições do compilador no Dev-C++. Quando estás a configurar o teu projecto, não estás mais do que a dizer ao Dev-C++ como queres que o projecto seja compilado pelo MinGW que é o compilador C/C++ utilizado pelo Dev-C++. Quem realmente compila e linka o teu projecto é o MinGW, não o Dev-C++. Este último é apenas um IDE (um programa que te facilita o desenvolvimento em C++ sem precisares de ir à consola do Windows pores lá os comandos para criares o ficheiro executável a partir do teu código).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa la os erro xD sim é o Dev C++

Então deixa ver se eu percebi tenho que as opções do compilador no Dev C++ e "dizer-lhe" para usar a allegro?!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora