Improved Console - "Getting Started für Programmieranfänger" Schritt 3 funktioniert nicht



  • Bin hiernach vorgegangen.

    Folgender Code sollte nun korrekt compiliert und ausgeführt werden können:

    #include <iostream>
    #include "ic.hpp"
    using namespace ic;
    using namespace ic::shorties;
    using namespace std;

    int main ()
    {
    textcolor(FG_RED);
    cout << "Hello World" << endl;
    return 0;
    }

    Funktioniert dieser Test wider erwarten nicht, melden Sie sich bitte in der Konsolensparte des C++.de-Forums - wir helfen bestimmt!

    Wider erwarten funktioniert er bei mir nicht.
    Bekomme immer die Fehler:

    Verknüpfen...
    ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ShowWindow@8" in Funktion ""public: void __thiscall ic::Console::hide(void)" (?hide@Console@ic@@QAEXXZ)".
    ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetWindowRect@8" in Funktion ""public: int __thiscall ic::Console::getWndPosX(void)const " (?getWndPosX@Console@ic@@QBEHXZ)".
    ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetWindowPos@28" in Funktion ""public: void __thiscall ic::Console::setWndPos(int,int)" (?setWndPos@Console@ic@@QAEXHH@Z)".

    Hab mal einen Screenshot gemacht, ich weis nämlich nicht ob ich die Dateien alle an die richtige Stelle gebracht habe.

    mfg Nozdrum



  • Der Code in Deinem Screenshot stimmt nicht mit dem geposteten überein. #include mit Quotes verwendet man für Nicht-System-Includes, der Präprozessor sucht dann relativ zum Projektverzeichnis und erst als allerletztes im Standard include -Ordner.

    Weiters machen vorkompilierte Header Anfängern eher Probleme, als sie Nutzen bringen ( stdafx.h ). Erstelle ein neues Projekt und gib im 2. Schritt bei der Konsolenanwendung an, dass Du ein "Leeres Projekt" erstellen willst. Vorkompilierte Header werden automatisch ausgegraut. Poste dann Dein Ergebnis (Completten Soucecode und Compilerausgabe).

    greetz, Swordfish

    PS: Hast Du die Platform SDK?



  • Danke für die Antwort.
    Das mit dem include "iostream" ist mir wohl aus versehen reingerutscht.
    Vorkompilierter Header raus - ok.
    Das steht jetzt bei mir drin:

    #include <iostream>
    #include "ic.hpp"
    using namespace ic;
    using namespace ic::shorties;
    
    int main ()
    {
    textcolor(FG_RED);
    std::cout << "Hello World" << std::endl;
    return 0;
    }
    

    Compilerausgabe:

    ------ Erstellen gestartet: Projekt: Blub, Konfiguration: Debug Win32 ------
    Kompilieren...
    Blub.cpp
    Verknüpfen...
    ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ShowWindow@8" in Funktion ""public: void __thiscall ic::Console::hide(void)" (?hide@Console@ic@@QAEXXZ)".
    ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetWindowRect@8" in Funktion ""public: int __thiscall ic::Console::getWndPosX(void)const " (?getWndPosX@Console@ic@@QBEHXZ)".
    ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetWindowPos@28" in Funktion ""public: void __thiscall ic::Console::setWndPos(int,int)" (?setWndPos@Console@ic@@QAEXHH@Z)".
    C:\Dokumente und Einstellungen\\Eigene Dateien\Visual Studio 2005\Projects\OOP\Blub\Debug\Blub.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.
    Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\
    \Eigene Dateien\Visual Studio 2005\Projects\OOP\Blub\Blub\Debug\BuildLog.htm" gespeichert.
    Blub - 4 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Irgendwann hab ich mir mal die "Microsoft Platform SDK for Windows Server 2003 R2" runtergeladen.



  • Ok. Linkereinstellungen Prüfen:

    Linkerbefehlszeile:
    Kontextmenü des Projekts -> Eigenschaften
    Konfigurationseigenschaften -> Linker -> Befehlszeile.
    Am Es sollten user32.lib und gdi32.lib auf jeden Fall dabeisein.
    Wenn nicht, könnt' ich mir zwar kaum vorstellen, aber... Murphy und so:
    Linker -> Eingabe -> Zusätzliche Abhängigkeiten: hier eintragen.

    Standardverzeichnisse:
    Menü Extras -> Optionen
    Projekte und Projektmappen -> VC++ Verzeichnisse
    Platform: Win32, Verzeichnisse anzeigen für: Bibliotheksdateien
    Sicherstellen, dass das [Installationsverzeichnis des Platform SDKs]\lib -Verzeichnis dabei ist.
    Wenn nicht: hier eintragen.

    Hoffentlich hilfts.

    greetz, Swordfish

    PS: Ich hab' nur VS 2008 hier und kann daher die Mauspfade nicht garantieren 😉



  • Danke 😃
    Funktioniert jetzt, habe aber es aber ein bisschen anders gemacht.
    Kontextmenü des Projekts -> Eigenschaften
    Konfigurationseigenschaften -> Linker -> Eingabe
    und da reingehauen.
    Und ich habe einfach alle .lib und alle include-Dateien vom SDK in den MVC++ reinkopiert.


Anmelden zum Antworten