fatal error LNK1169: one or more multiply defined symbols found



  • ich bekomme beim compilieren folgende fehlermeldung:

    fatal error LNK1169: one or more multiply defined symbols found
    

    aber dabei habe ich in allen headern sauber include-guards verwendet.

    jemand nen tipp wo das herkommen könnte?



  • Das Problem hatte ich auch schon. Bei mir ist es verschwunden als ich zusaetzlich vor die jeweilige Methode ein static gesetzt habe. Allerdings weiss ich nicht ob das die richtige Art und Weise ist den Fehler zu beheben 😉 . Der Fehler jedenfalls ist verschwunden. 😃



  • Du solltest in deinen Headern überhaupt keine Definitionen unterbringen - höchstens Deklarationen (Funktionsprototypen bzw. extern-Variablen). Gegen Probleme des Linkers schützen die Include-Guards nämlich ÜBERHAUPT NICHT.
    (die zugehörigen Definitionen zu deinem Header gehören in GENAU EINE .CPP-Datei)

    PS: Ausnahmen von dieser Regel gelten nur für Templates und inline-Funktionen - die dürfen (und müssen) im Header definiert werden.



  • thx, mit einem static geht es.

    ich hab da ein .cpp file in dem ich verschiedene enums und structs untergebracht sind, die ich in verschiedenen klassen wieder verwenden möchte.

    und eben auch eine funktion die ich den klassen brauche.

    und diese .cpp datei wird bei mir dann in der stdafx.h eingebunden. (auch wenn es da viel. nicht hingehört?)



  • Da solltest du die CPP lieber aufteilen in einen Header (enums, Klassendeklarationen, Funktionsprototypen - wird per #include eingebunden) und eine "echte" CPP (Funktions-Quelltexte und Variablen-Definitionen - wird parallel mitcompiliert und verlinkt).


Anmelden zum Antworten