Jump to content
Quintal

Problemas allegro vs c++

Recommended Posts

Quintal

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();

Share this post


Link to post
Share on other sites
Marfig

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.

Share this post


Link to post
Share on other sites
Quintal

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

Share this post


Link to post
Share on other sites
Quintal

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

Share this post


Link to post
Share on other sites
Quintal

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

Share this post


Link to post
Share on other sites
Marfig

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.

Share this post


Link to post
Share on other sites
Quintal

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

Share this post


Link to post
Share on other sites
Marfig
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/

Share this post


Link to post
Share on other sites
Quintal

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?

Share this post


Link to post
Share on other sites
Marfig

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).

Share this post


Link to post
Share on other sites
Quintal

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?!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.