Library erstellen: Doppelt definierte Symbole vermeiden



  • Hallo,

    ich habe mit dem VC++ einige Klassen und Funktionen geschrieben, die ich nun gerne in eine *.lib packen würde. Diese Funktionen inkludieren jede Menge Standardheader, zum Beispiel <iostream>. Also habe ich nun ein neues Projekterstellt (lib), die Projektdateien eingebunden, und kompiliert. Soweit so gut.

    Nun will ich die Lib in einem anderen Programm verwenden. Dazu inkludiere ich den Header der lib (der unter anderem eben iostream inkludiert). Beim Linken erhalte ich dann allerdings jede Menge Fehler von irgendwelchen doppelten Definierungen:

    msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::operator<<(unsigned int)" (??6?basic_ostream@DU?basic\_ostream@DU?char_traits@D@
    std@@@std@@QAEAAV01@I@Z) already defined in ckgui.lib(ckgui.obj)

    (ckgui.lib ist meine selbst erstellte lib). Ich nehme an, die Implementierung dieses z.B. operators ist mit in die ckgui.lib gerutscht, dabei sollte sie da ja eigentlich gar nicht sein? Wenn ich iostream nicht einbinde, meckert schon der Compiler.

    Ich hoffe, ihr versteht mein Problem und könnt mir helfen 🙂
    Vielen Dank,
    Phobos


Anmelden zum Antworten