Raus aus der Konsole



  • Wutz schrieb:

    OOP ist keine Bedingung für grafische Ausgaben.

    Aber es macht insbesondere GUIs um einiges einfacher. Glücklickerweise ist OOP keine Bedingung, C nicht verwenden zu können (siehe Gtk+).



  • Es gibt Fortschritte bei Cygwin und Allegro 5...

    Ich befolge nun die Readmes aus dem Allegro5 Archiv
    allegro-5.0.9.zip von http://alleg.sourceforge.net/download.html:

    1. Aufgabe (das sagt die README aus Allegro5)
    cmake installieren: http://www.cmake.org (README von cmake:)
    $ ./bootstrap

    2. Aufgabe (README_make aus Allegro5)
    Allegro5 im Cygwin Ordner entpacken. Einen neuen Ordner 'Build' erstellen. Mit cygwin in diesen Ordner wechseln und dann
    $ cmake ..
    Er hat gemeckert, dass ich libFlAC, libdump, libvorbis nicht habe .. hab sie aber noch nicht runtergeladen (könnte das den Fehler unten erklären?!)

    3. Aufgabe
    Allegro erstellen (im selben Build Ordner)
    $ make
    $ make install

    Zum Ende hin bin ich diesem Tutorial gefolgt: http://wiki.allegro.cc/index.php?title=Install_Allegro5_From_Git/Linux/Debian
    (obwohl ich auf Windows7 mit Cygwin bin!)

    Erstes Kompilieren: gcc -Wall -pedantic -o main.exe main.c
    ........ er meckert nicht mehr, dass die Header Datei fehlt .... uuuh ein spannender Moment. 😮

    Dafür jede Menge Fehler im Testcode:

    #include <allegro5/allegro.h>
    
    int main(){
        int x=0,y=0;
    
        allegro_init();
        install_keyboard();
        set_color_depth(16);
        set_gfx_mode( GFX_AUTODETECT, 800 , 600, 0, 0);
    
        while(key[KEY_ESC]==0)
        {
           textprintf_ex(screen, font, x, y, makecol(255, 255, 255), makecol(0, 0, 0), "Hallo Welt!");
        }
    
        return 0;
    }
    END_OF_MAIN();
    

    Den Code hab ich von http://www.c-programmieren.com/Allegro-Tutorial.html
    Der benutzt wohl eine ältere Allegro Version. Sind die Funktionen unter Allegro 5 etwa nicht mehr aktiv?!?
    Kann ich mir eigentlich nicht vorstellen ...

    Also .. warum kompilliert er das nicht ...?



  • Ein noch minimaleres Beispiel:

    #include <stdio.h>
    #include <allegro5/allegro.h>
    
    int main(int argc, char **argv){
    
       ALLEGRO_DISPLAY *display = NULL;
    
       display = al_create_display(640, 480);
    
       al_destroy_display(display);
    
       return 0;
    }
    

    In Cygwin kompiliert:

    $ gcc -Wall -pedantic -o main.exe main.c
    
    undefined reference to '_al_create_display'
    undefined reference to '_al_destroy_display' 
    collect2: ld gab 1 als Ende-Status zurück
    

    Aber die Header wird eingebunden?!
    Was passiert hier? Warum klappt das nicht??

    ... langsam geht mein Latein zu ende 😞



  • Der Code mit END_OF_MAIN() geht, wie du schon sagtest, nicht mehr mit Allegro 5.
    Dein anderer Code sollte funktionieren.
    Du musst noch die Lib-Dateien in den Linker Settings hinzufügen, so weiß der Compiler nur, dass es eine Funktion al_create_display gibt, aber nicht was sie macht.



  • Hey Nathan,
    ja danke! 🙂

    Nathan schrieb:

    Du musst noch die Lib-Dateien in den Linker Settings hinzufügen, so weiß der Compiler nur, dass es eine Funktion al_create_display gibt, aber nicht was sie macht.

    Ja. Das hab ich jetzt auch gefunden:

    17. This won't compile just yet. MAke sure to include the allegro library files as shown below:
    Click Project->Build Options->Linker Settings. Click Add. Click the "..." box.
    Navigate to "C:\codeblocks\MinGW\lib" and select "liballegro.dll.a".
    Keep the path as relative, or not, it depends on what you prefer if the locations of the file changes in the future.

    https://www.allegro.cc/forums/thread/606041

    Aber ich kann das nicht mit Cygwin linken .... ???

    Dazu hab ich das hier gefunden und bereits befolgt: http://alleg.sourceforge.net/stabledocs/en/build/mingw32.html
    bringt nichts.



  • Wo hast du denn die lib-Dateien abgespeichert?
    Genau diesen Ort gibst du in den Linkersettings an.



  • Nathan schrieb:

    Wo hast du denn die lib-Dateien abgespeichert?
    Genau diesen Ort gibst du in den Linkersettings an.

    Wenn ich nur wüsste wie .....
    ich suche schon seit Stunden und finde nichts. 😞 😞

    Die libs hab ich unter cygwin/lib und unter usr/local/lib

    Sind das die Linker Settings?

    export ALLEGRO_USE_CYGWIN=1
             export MINGDIR=/usr/local
             export CPATH=/usr/local/include
             export LIBRARY_PATH=/usr/local/lib
    


  • Soweit ich das weiß (und ich kenn mich mit Cygwin nicht aus), hast du nur gesagt, wo die Datein sind, nicht welche dazu kommen sollen.
    Nutzt du eine IDE, wenn ja welche?



  • Hmm .. welche dazu kommen sollen...

    Ich hab Allegro mit make und cmake quasi 'installiert'. Da hab ich einen neuen Ordner Build erhalten. Dadrin sind einige neue dlls erschienen, die heißen liballegro_xyz.dll, und noch vieles mehr. Das alles ist in dem Cygwin Ordner. Einiges hab ich auch in die Cygwin Bib per Hand kopiert.

    Ich benutz keine IDE .....

    Code in einem Editor (damit es bunt und übersichtlich ist, hab ich CodeLite) dann mit Cygwin kompilieren. Cygwin tut nur so als wäre ich auf Linux unterwegs.
    Aber ich bin nicht auf Linux, ich hab Windows7. Und ich kenne mich mit Linux nicht aus. Ich hab immer nur die Befehle
    gcc -Wall -pedantic -o main.exe main.c
    benutzt ..... Damit hatte ich keine Probleme bisher.

    Cygwin Installation geht auch vollautomatisch: http://cygwin.com/install.html
    die Setup Datei lädt die Pakete runter, die man haben will und mehr muss man nicht machen!
    Allegro wird da nicht angeboten, also muss man das von Hand hinzufügen.

    Ansonsten hat mich cygwin immer sehr verwöhnt, ich musste mich um nichts kümmern. 😉
    Und wenn man C kompiliert, bekommt man in Cygwin immer seeeeeeehr genaue und verständliche Warnungen/Fehler angezeigt. Bin damit immer gut gefahren und eigentlich sehr zufrieden.

    .... so langsam werd ich verrückt von .... 🤡 🤡



  • Hast du auch einen Ornder lib?
    Mit Dateien wit liballegro_xyz.a?
    Eine heißt monolith.
    Die fügst du mit -l in der Befehlszeile hinzu.



  • Eine monolith Datei hab ich nicht .... 😕

    Wird auch nichts in der Windows Suche gefunden.

    Ich wollt schon mal Danke sagen, dass du mir so bereitwillig hilfst! 🙂 🙂 Find ich klasse. Ich komme hier schon gar nicht mehr zurecht... ^^



  • Lymogry schrieb:

    Ich benutz keine IDE .....

    Du hast Windows und frickelst mit Cygwin rum?
    Mensch Jung, mach dir das Leben nicht unnötig schwer.
    http://www.microsoft.com/visualstudio/deu/products/visual-studio-express-products



  • CJosef schrieb:

    Du hast Windows und frickelst mit Cygwin rum?

    Das wird bei uns an der Uni so geschätzt. 😉
    Ich komme mit cygwin nicht mehr weiter ..... 😕 😕 😕

    So ... Visual Studio also..
    Und garantierst du mir, dass ich Allegro mit Visual Studio 2010 zum Laufen bekomme? 😉
    Das muss ich mir jetzt auch erstmal runterladen (Visual Basic 2010 hab ich jetzt). Ist der Compiler direkt C fertig, oder muss ich da noch was tun??

    Dann zu Allegro:
    Im Videotutorial zur Installation
    http://www.youtube.com/watch?v=98hTrHen7IA&list=PL9333715188CD7669
    hat der Kerl 3 Ordner: Bin Include und Lib
    Ich hab keins davon ... und weiß auch immer noch nicht, wo die herkommen sollen ...... schaut doch: http://alleg.sourceforge.net/download.html 😕

    Ich schreibe lieber geschlechtsneutral, dann bekommt man eher ne Antwort, aber ich oute mich mal jetzt als weiblich.
    Hiiiiilfeeee .... "Jungfrau in Nöten" 🙄





  • ...



  • Lymogry schrieb:

    Und garantierst du mir, dass ich Allegro mit Visual Studio 2010 zum Laufen bekomme? 😉

    Das du es zum Laufen bekommst, kann ich natürlich nicht garantieren! 🤡
    Btw. gibt es seit geraumer Zeit Visual Studio Express 2012,
    ich würde lieber die aktuelle Version runterladen.



  • Habs gerade beim Mampfen ausprobiert.
    Garantieren kann ich dir, dass es(MSVC 11 - zip) unter Visual Studio 2012 läuft.
    http://s1.directupload.net/images/130407/y8jvaer3.png
    Ich habe mich an die von Nathan verlinkte Anleitung gehalten.
    Wenn du C-Programme erstellen willst, dann musst du allerdings deine Quelldatei main.c nennen, sonst kompiliert VS im C++ Modus.

    Lymogry schrieb:

    Ist der Compiler direkt C fertig, oder muss ich da noch was tun??

    Jepp direkt fertig ist...
    Du musst deinen Dateien lediglich die richtige Endung verpassen -
    *.c für C Programme bzw. *.cpp für C++ Programme.



  • soo ... ich jetzt auch.. 🙂
    Es kompiliert! Jipie.

    Aber ich hab keine Ausgabe. Mir würde die allegro-5.0.8-monolith-md-debug.dll fehlen ...?!

    Ich bin ganz neidisch auf deine Ausgabe 😞

    Noch ein Edit: Ich weiß jetzt nicht, ob das oben ein Fehlalarm war. Jetzt hab ich doch ein schwarzes Fenster..

    Kannst du mal deinen bunten Code bitte hier reinkopieren? 😉



  • Lymogry schrieb:

    Aber ich hab keine Ausgabe. Mir würde die allegro-5.0.8-monolith-md-debug.dll fehlen ...?!

    Die dll muss in den Ordner, wo deine *.exe ist, dann sollte das funzen.

    Mein bunter Code ist aus Tutorials zusammenkopiert und nicht gerade beispielhaft,
    darum lasse ich das mit dem hier reinkopieren lieber.
    Ich wollte bloß ne Ausgabe zum Testen haben, das kriegst du selber leicht hin, wenn deine dll gefunden wird.



  • DANKE DANKE DANKE !!

    Ja, das funktioniert jetzt!

    Mein Abenteuer "Raus aus der Konsole" kann nach 48h Anlauf endlich beginnen! 😃


Anmelden zum Antworten