Allegro Programm in der Konsole



  • Hallo,

    ich arbeite zur Zeit an einem Programm, in dem ich einige Funktionen von Allegro nutzen möchte. Das Programm soll eine reine Konsolenanwedung sein, und ich benutze MSVC 6.0.

    Allerdings habe ich dabei einige Probleme, die trotz Allegro Manual und googeln nicht lösen konnte 😞 :

    Also mein Header sieht im Moment so aus:

    #define ALLEGRO_USE_CONSOLE
    #define <allegro.h>
    #define <winalleg.h>
    #define <string>
    #define <iostream>
    ...

    Wenn ich kompiliere bekomme ich folgende Meldung:

    fatal error C1189 : #Fehler : WINDOWS.H already included. MFC apps must not #include <Windows.h>

    Das bringt mich dann schonmal zu der Frage, was eine Konsolenanwendung eigentlich mit der MFC zu tun hat???? Sind auch in den Projekteigentschaften deaktiviert.

    Ich hab auch mal das '#include <winalleg.h>' mal einfach weggelassen, führt dann aber zu noch viel wilderen Fehlern, die so aussehen:

    c:\program files\microsoft visual studio\vc98\include\wingdi.h(486) : error C2371: 'BITMAP' : Neudefinition; unterschiedliche Basistypen
    c:\program files\microsoft visual studio\vc98\include\allegro\gfx.h(262) : Siehe Deklaration von 'BITMAP'
    c:\program files\microsoft visual studio\vc98\include\wingdi.h(3429) : error C2229: struct 'tagDIBSECTION' enthaelt ein Feld mit der unzulaessigen Groesse 0
    c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(218) : warning C4005: 'TRACE' : Makro-Neudefinition
    c:\program files\microsoft visual studio\vc98\include\allegro\debug.h(40) : Siehe vorherige Definition von 'TRACE'
    c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(226) : warning C4005: 'ASSERT' : Makro-Neudefinition
    c:\program files\microsoft visual studio\vc98\include\allegro\debug.h(39) : Siehe vorherige Definition von 'ASSERT'
    CNCtisch.cpp
    c:\program files\microsoft visual studio\vc98\include\wingdi.h(486) : error C2371: 'BITMAP' : Neudefinition; unterschiedliche Basistypen
    c:\program files\microsoft visual studio\vc98\include\allegro\gfx.h(262) : Siehe Deklaration von 'BITMAP'
    c:\program files\microsoft visual studio\vc98\include\wingdi.h(3429) : error C2229: struct 'tagDIBSECTION' enthaelt ein Feld mit der unzulaessigen Groesse 0
    c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(218) : warning C4005: 'TRACE' : Makro-Neudefinition
    c:\program files\microsoft visual studio\vc98\include\allegro\debug.h(40) : Siehe vorherige Definition von 'TRACE'
    c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(226) : warning C4005: 'ASSERT' : Makro-Neudefinition
    c:\program files\microsoft visual studio\vc98\include\allegro\debug.h(39) : Siehe vorherige Definition von 'ASSERT'
    main.cpp
    c:\program files\microsoft visual studio\vc98\include\wingdi.h(486) : error C2371: 'BITMAP' : Neudefinition; unterschiedliche Basistypen
    c:\program files\microsoft visual studio\vc98\include\allegro\gfx.h(262) : Siehe Deklaration von 'BITMAP'
    c:\program files\microsoft visual studio\vc98\include\wingdi.h(3429) : error C2229: struct 'tagDIBSECTION' enthaelt ein Feld mit der unzulaessigen Groesse 0
    c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(218) : warning C4005: 'TRACE' : Makro-Neudefinition
    c:\program files\microsoft visual studio\vc98\include\allegro\debug.h(40) : Siehe vorherige Definition von 'TRACE'
    c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(226) : warning C4005: 'ASSERT' : Makro-Neudefinition
    c:\program files\microsoft visual studio\vc98\include\allegro\debug.h(39) : Siehe vorherige Definition von 'ASSERT'

    Der einzige Weg, das ganze erfolgreich zu kompilieren wäre MFC in den Projekteigenschaften zu einzuschalten und dem o.g. Header noch die Zeile

    #define ALLEGRO_AND_MFC

    hinzuzufügen.

    Das Programm läuft dann aber fehlerhaft, und ich habe neben dem Konsolenfenster dann immer noch ein anderes Fenster in der Taskleiste, das ich anclicken muss um irgendwelche Eingaben zu machen, die dann natürlich wiederum nicht in der Konsole erscheinen.

    Also ich weiss da jetzt echt nicht weiter, und bedanke mich schon mal für jede Hilfe im voraus!!!



  • Als Du das KonsolenProjekt angelegt hast, hast Du da "Eine Anwendung, die MFC unterstützt" ausgewählt?

    Wenn Du doch MFC brauchst, dann reicht es soweit ich informiert bin, "#include <stdafx.h>" einzubinden.



  • Moin,

    okay, das mit der stdafx.h war schonmal ein guter tipp. Die wird nämlich von einer Klasse noch integriert, weswegen ich das alles mit MFC kompilieren muss, damit sich da nichts in die Quere kommt. Jetzt weiss ich wenigstens schonmal woher der Fehler kommt... 😋

    Was ich leider noch nicht weiss, ist wie ich Allegro UND die Konsole UND MFC in einem Projekt nutzen soll...

    Aber danke erstmal



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten