Haufenweise bgi-Fehler trotz eingetragener Linker



  • Hallo Community!
    Ich hatte vor einiger Zeit mit der c++-Programmierung begonnen, machte aber bereits Erfahrung in anderen Sprachen wie Pascal. Ich benutze Dev-C++ 4.9.9.2 mit mingw und möchte nun mit der BGI-Grafikprogrammierung beginnen. Dazu habe ich das winbgim dev-pak geladen. Nun zum Problem. Der Code:

    int main()
    {
        char c;
        DWORD time = timeGetTime();
        while(TRUE)
        {        if (timeGetTime() - time > 2000)
            {
                cout<<"Drueck linke Pfeiltaste"<<endl;
                time = timeGetTime();
            };
            if (kbhit())
            {
                c = getch();
                if (c == 75) cout<<"gut so!"<<endl;
            };
        };
        return 0;               
    }
    

    Include: iostream, conio.h, windows.h, graphics.h
    Linker: -luser32 -lgdi32 -lwinmm -lbgi

    Es ist keine Grafikprogrammierung enthalten aber die Linker-Fehler treten trotzdem auf. Auszüge:
    [Linker error] undefined reference to GetStockObject@4' [Linker error] undefined reference toSetTextColor@8'
    [Linker error] undefined reference to `GetPixel@12'

    Nun das Kuriose: Entferne ich den lbgi-Linker, läuft das Programm. Füge ich den Linker wieder hinzu, läuft es immer noch. 😕 Nehme ich danach Veränderungen am Code vor, kommen wieder Fehler. Um zu testen ob es an den includes oder libs liegen könnte, habe ich den Inhalt der main-Funktion durch einen einfachen Grafik-Code ersetzt:

    initwindow(320,240);
    lineto(320,240);
    

    Beim ersten Kompilieren die gleichen Fehler. -lbgi entfernt, wieder hinzugefügt und es hat funktioniert: Ein kleines Fenster mit einer Diagonalen. Bei nachträglichen Veränderungen kamen wie gehabt Fehler. Ich bin ziemlich verwirrt und hoffe, dass ich mein Problem nachvollziehbar formuliert habe. Liegt es vielleicht am Compiler bzw. an Dev-C++? Sollte ich umsteigen? Für eure Hilfe wäre ich dankbar.

    MfG Ivanez



  • Nun das Kuriose: Entferne ich den lbgi-Linker, läuft das Programm. Füge ich den Linker wieder hinzu, läuft es immer noch. 😕 Nehme ich danach Veränderungen am Code vor, kommen wieder Fehler. Um zu testen ob es an den includes oder libs liegen könnte, habe ich den Inhalt der main-Funktion durch einen einfachen Grafik-Code ersetzt:

    Das klingt sehr startk danach, dass ein Komplett Build nötig ist.
    Und da du fragst. Ja, steig um. DevC++ ist veraltet. Benutzt Code::Blocks, oder MSVC++.

    http://www.codeblocks.org/



  • Danke für die schnelle Antwort. Ich werde Code::Blocks ausprobieren. Die Feature-Beschreibungen auf der HP hören sich vielversprechend an.

    MfG Ivanez



  • Ivanez schrieb:

    Es ist keine Grafikprogrammierung enthalten aber die Linker-Fehler treten trotzdem auf. Auszüge:
    [Linker error] undefined reference to GetStockObject@4' [Linker error] undefined reference toSetTextColor@8'
    [Linker error] undefined reference to `GetPixel@12'

    Das sind Funktionen aus der WinApi. Sie werden wohl von der Grafikbibliothek benutzt. Nimm mal -lwingdi in Deine Linkliste mit auf.



  • Belli schrieb:

    Das sind Funktionen aus der WinApi. Sie werden wohl von der Grafikbibliothek benutzt. Nimm mal -lwingdi in Deine Linkliste mit auf.

    Diese Datei habe ich nicht. Sie war auch nicht im Dev-Pak enthalten.

    MfG Ivanez



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • Ivanez schrieb:

    Belli schrieb:

    Das sind Funktionen aus der WinApi. Sie werden wohl von der Grafikbibliothek benutzt. Nimm mal -lwingdi in Deine Linkliste mit auf.

    Diese Datei habe ich nicht. Sie war auch nicht im Dev-Pak enthalten.

    MfG Ivanez

    Jau, ich sehe gerade, daß ich die auch nicht habe 😕
    Google sagt, daß die entsprechenden libs beim Linkerschalter -mwindows automatisch mit eingebunden werden ...



  • Ich bin ein Muppet ... die include - Datei heißt zwar wingdi.h, aber die lib heißt gdi32, also probier mal -lgdi32 (oder aber -mwindows).



  • -lgdi32 hatte ich hinzugefügt. Anscheinend muss noch mehr dabei.

    MfG Ivanez



  • Hab das mit WinAPI schon ein paar Tage nicht mehr gemacht.
    Hast du mal versucht mit einem anderen Quelltext die Fehler zu reproduzieren?

    Meine mich erinnern zu können, das die Fehlermeldungen Compilerspezifisch waren.
    D.h.: je nach Compiler kommt da noch ein Unterstrich hinzu oder der aus mehreren
    Worten gebildete Begriff enthielt ein Wort mehr oder eins weniger.

    MfG f.-th.



  • Ich denke hier ist der richtige Hinweis:
    http://www.softgames.de/forum/frage120582.html

    MfG f.-th.


Log in to reply