Linkerfehler 2019 und 1120



  • Hallo

    Ich habe eine Klasse namen Foo, in der eine Memberfunktion namens Hallo() liegt. Desweiteren habe ich zwei datein namens functions.h und functions.cpp in der eine Funktionen namens GetString liegt. Nun möchte ich in der Memberfunktion Hall der Klasse foo GetString aufrufen, um eine String zu bekommen:

    #pragma once
    #include "functions.h"
    class foo
    {
        void Hallo() {cout<<GetString().GetBuffer();}
    }
    

    functions.h

    #pragma once
    
    #include <atlstr.h>
    
    CString GetString(void)
    

    functions.cpp

    #include "functions.h"
    CString GetString(void)
    {
        return _T("Hallo");
    }
    

    Nun bekomme ich leider die Linkerfehler 2019 und 1120 (unresolved externals). Was habe ich falsch gemacht?

    Danke für die Hilfe



  • Die Bibliothek, die du verwendest nicht dazugelinkt?



  • Ich verwende keine Bibliothek außer der MFC und die ist dazugelinkt.

    chrische



  • Hallo,

    Kannst du uns auch noch sagen, was dein Linker nicht gefunden hat? Wenn es die GetString() ist, hast du functions.cpp mit gelinkt?



  • Hallo

    Es handelt sich um die Funktion GetString(). Warum muss ich die .cpp-datei mitlinken?



  • test_test schrieb:

    Warum muss ich die .cpp-datei mitlinken?

    Irgendwoher muß der Linker ja wissen, was die Funktion GetString() machen soll (und weil ihm niemand zumuten kann, dein komplettes System nach dieser Funktion abzusuchen, mußt du ihm die nötige LIB mitgeben).



  • Wie kann ich denn die cpp-Datei linken? per include? Die Funktion sthet doch in keiner lib.



  • Die cpp soll auch nicht direkt gelinkt werden. Sie wird zuerst compiliert und dann wird die entstehende Objektdatei mit gelinkt. Wie das genau gemacht wird, hängt von deinem Compiler (IDE) ab.



  • Was muss ich denn nun anders machen? Ich verstehe nicht recht, wo mein Fehler liegt.

    Danke



  • Was für einen Compiler verwendest du denn?

    Die Fehlernummern sehen nach MSVC aus - in dem Fall mußt du nur die functions.cpp in dein Projekt aufnehmen und der Compiler sollte sich um den Rest kümmern.



  • Also ich benutze VS 05 und habe die beiden Datein per "Add New Item" hinzugefügt. Sie gehören also schon zum Projekt.

    chrische



  • Ich sehe da gerade was:

    test_test schrieb:

    functions.h

    #pragma once
    
    #include <atlstr.h>
    
    CString GetString(void)
    

    Ich hoffe, das fehlende Semikolon am Ende des Prototyps ist nur ein C&P-Fehler.



  • Hallo

    Das war die ganze Zeit ich, aber von einem anderem Rechner, mit dem ich mich nicht erst anmelden wollte.

    Also das vergessene Semikolion ist natürlich nur ein C&P - Fehler.

    chrische



  • Hallo

    Hat keiner von Euch eine Idee, was ich hier falsch mache. Ich komme einfach nicht weiter.

    chrische



  • Hallo

    Weiß denn wirklich keiner von euch Rat. Das kann doch eigentlich kein Problem sein, zwei Dateien zum Projekt hinzuzufügen und dann einige Hilfsfunktionen dorthin auszulagern.

    chrische


Log in to reply