multiple definition
-
Hallo,
bisher habe ich meine Dateien immer mit
#include "myheaderfile.h"includiert.
Jetzt hab ich mir ne kleine Library geschrieben,
so dass ich die jetzt mit#include <mylib/myheaderfile.h>includiere.
Den Pfad übergeb ich natürlich beim Kompilieren und linken.
Er kompiliert auch fehlerfrei, allerdings meldet er beim Linken
der Klassen:multiple definition of `Class::method()'
Was kann ich dagegen tun?
Gruß,
Jens
-
Moin schrieb:
Was kann ich dagegen tun?
Keine Definitionen in den Header-File schreiben.
:xmas1: 
-
häh...
Dafür sind header doch da...Wie soll ich sonst die Methoden aufrufen?
-
In die Header gehören nur Deklarationen (extern-Variablen und Funktionsprototypen), die zugehörigen Definitionen kommen in die passenden Quell-Dateien. Auf diese Weise bekommt der Linker nur eine Version deiner Funktion übergeben, mit der er dann weiterarbeiten kann.
(PS: Ausnahme sind nur Templates und Inline-Funktionen, da muß der Compiler bereits die Definition sehen, um sie verarbeiten zu können)