Visual Studio C++ Express - error LNK2001

  • Der Fehler ist im Internet ja bekannt, wie ich bei meiner Suche festgestellt hab, aber ich kapier das einfach nicht wie man diese user32.lib dem Linkervorgang anhängen soll...
    Irgendwo in den Projekt-Eigenschaften, aber wo und was...?

    Vielleicht kann mir das jemand kurz aber verständlich erklären!


    Hab sowohl 8 (2005) als auch 9 (2008). Und beidesmal tritt der Fehler auf!

  • Also ich habe hier zwar nicht die Express (sondern Professional), aber es müsste bei dir genauso gehen:

    Project -> (Projektname) Properties... -> Configuration Properties -> Linker -> Input -> Additinal Dependencies -> [...]

    Dort kannst du weitere statische Libs eintragen. Doch normalerweise sollte die user32.lib immer drin sein.
    Was ist denn das für ein Projekt (Win32 Console Application?). Wenn du ein Empty Project erstellt hast, bekommst du wahrscheinlich noch mehr Probleme. Denn dann ist garnichts eingestellt.

  • Danke für die schnelle Hilfe,

    Da steht nur kernel32.lib (aber ich glaub die hab ich selbst bei meinen versuchen es zum laufen zu bringen eingefügt... und die user32 ist NICHT dabei!!)

    Ja hab ein empty/leeres Projekt erstellt... hmm dann versuch ich das morgen mal ohne leeres Projekt...


    Aber wieso ist das denn auf einmal alles so umständlich, hatte zuvor die Version 6 aber der hat immer einen Fehler gemeldet wenn ich Zählervariablen innerhalb von for-Schleifen deklariert hab...

  • Also wenn es um Konsolenprogrammierung geht, nimm das "Win32 Console Application Project" als Startprojekt. Dann sind die nötigen Voreinstellungen schon drin. Dann dürftest du kein Problem mehr haben.

    Und zu deinem Fehler, du meinst wahrscheinlich so was hier:

    Oder? Falls das die Fehlermeldungen verursacht hat -> die Variable i gehört mehr oder weniger zum Scope der for-Schleife, auch wenn diese nur einmal angelegt wird (im Gegensatz zu y). Deswegen kannst du i außerhalb der for-Schleife nicht nutzen.

    So weit ich weiß war das früher (vor dem ISO C++ 99 Standard) möglich.

  • Ja genau ist nur Win32 Console...


    So hab's nun mit einem NICHT leeren Projekt versucht, nun kommt ein anderer Fehler...

    Code
    fatal error C1083: Cannot open precompiled header file:


    Und beim Kompilieren kam noch folgende Meldung:

    Code
    the project is out of date


    Kann ich mir irgendwie nicht so recht erklären, aber ich glaub das ich da irgendwas falsch gemacht hab.

    Ich hab eben ein Win32 Projekt angelegt und dann die *.cpp / *.h Dateien aus dem Projekt entfernt und meine Dateien angehängt. (Sollte man eigentlich *.hpp benutzen?)


    Und das mit der besagten Fehlermeldung im alten VS ist anders gemeint gewesen, dass das Beispiel von dir nicht funktionieren sollte ist mir klar. Aber ich musste komischerweise die Zählervariable z.B. i immer außerhalb der for-Schleife deklarieren - ansonsten kam ein Fehler. Hat mich auch sehr gewundert, aber ich wollte sowieso mal die neuere Version benutzen! Nun hab ich bisher aber mehr Ärger als Nutzen von...

  • Ich muss zugeben das ich mit Visual Studio noch nie Precompiled Header genutzt habe. Aber der Fehler deutet ja darauf hin, dass er die Header nicht finden kann. Eventuell hast du dich nur vertippt. Könnte aber auch sein das die Precompiled Header (welche du in dem Projekt nutzt - kann man auch ausschalten) anders heißen. Aber das weiß ich nicht.

    "The Project is out of date" heißt einfach nur, dass seit dem letzten Compiliervorgang sich die Sourcefiles geändert haben. Einfach nochmal kompilieren und fertig.

    Ach und ob du *.h oder *.hpp benutzt ist eigentlich egal. Mir persönlich gefällt die Endung *.h besser, ist auch fast überall anzutreffen...

  • Danke dir, aber ich hab's noch immer nicht hin bekommen.

    Hier mal die Fehlermeldungen.

    Also ein Vertippen kann ich ausschließen, da ich es nun mehrmals versucht hab...

    (Precompiled header heißt ja nur, dass ich *.cpp und *.h Code in externe Dateien ausgelagert habe, oder?!)


    Ich denke der Fehler liegt irgendwo in der Anlegung des Projektes oder so...

    Ich mache "New Project" dann Halt Name und blabla angeben, "Win32 Console Application"
    Und danach habe ich alle Haken weg gelassen (Habs aber auch mal mit Haken am "Precompiled Header" dran gelassen, was nichts ändert.
    Danach lösche ich alle vorhandenen Dateien im VS raus (nicht im Verzeichnis) und dann füge ich per "Add" --> "Existing Item" meine vorhandenen *.h/*.cpp Dateien ein.

    Ist das so korrekt? (Und sollte ich denn nun den Haken an "Precompiled Header" dran lassen oder nicht, das verwirrt mich noch ein wenig)

  • Also, Precompiled Header heißt nicht das du sie einfach auslagerst, sondern das sie wirklich schon im kompilierten Zustand vorliegen und der Compiler die nicht mehr parsen muss.

    Diese ganzen unresolved external symbols Fehler kommen vom Linker, der aus deinen Objektdateien eine ausführbare Datei macht. So wie es aussieht hast du vergessen die Headerdatei von der "Container" Klasse (oder Struktur) zu includieren.

    Die muss noch per include rein, und dann sollten diese Fehler nicht mehr auftauchen...