improved console: Link Problem



  • Hallo ich habe Microsoft Visual C++ Express Edition 2005 + Microsoft SDK 2 installiert.
    Ich versuche jetzt was mit der Improved Console 4 zu basteln, ich habe die ic.hpp und die ic.cpp zu meinem Projekt hinzugefügt.
    Wenn ich jetzt aber mein Programm Compiliere möchte bekomme ich Linker Fehler:
    Programm:

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

    Fehler:

    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)"
    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)"
    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)"
    


  • hast du die zwei dateien auch in den gleichen ordner wie die anderen cpp/hpp
    dateien kopiert?



  • Ja liegen im selben Ordner wie die main.cpp



  • Link folgende Lib:
    user32.lib
    (In die MSDN kucken hilft^^)
    rya.



  • Danke es geht, aber was ich nicht verstehe ist, die User32.Lib ist im Ordner "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib".
    Ich habe diesen aber in den Einstellungen von Visual C++ als Standard Lib Verzeichnis hinzugefügt, wieso findet er die Lib nicht von selber?



  • weil er nich jede einzelne lib nach den funktionen durchsuchen kann/will.
    Das musst du deinem Linker schon selber sagen. 🙂



  • achso, okey danke.



  • Ich habe ein neues Problem, mein Programm:

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

    ergibt:

    error C2664: 'ic::Console::setTitle': Konvertierung des Parameters 1 von 'const char [12]' in 'const std::basic_string<_Elem,_Traits,_Ax> &' nicht möglich	Zeile 10
    


  • Geht die Fehlermeldung noch weiter? Normalerweise kommt in den nächsten Zeilen noch eine Angabe ala "with _Elem=...".

    (und ich würde spontan darauf tippen, daß du mit den UNICODE-Einstellungen Probleme bekommst - verwende mal con.setTitle(_T("Hello World")); )


Anmelden zum Antworten