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 Standardinclude
-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 solltenuser32.lib
undgdi32.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.