PDA

View Full Version : [VC++]ERROR LNK2005


hibone
17-12-2008, 17:34
Come da titolo ricevo questo errore al termine della compilazione di alcuni file...

l'errore deriva da alcune funzioni, definite in un header, che viene richiamato da più sorgenti.

qualcuno saprebbe dirmi come ovviare al problema?

ho già usato la direttiva#pragma once, che in questo caso non aiuta..

FixFixFix
17-12-2008, 18:09
se non è il cassico problema dei pre-compiled headers, non hai qualche dettaglio in + ? proverei a commentare piano piano fino a vedere che include da problemi

hibone
17-12-2008, 18:50
se non è il cassico problema dei pre-compiled headers, non hai qualche dettaglio in + ? proverei a commentare piano piano fino a vedere che include da problemi

innanzitutto grazie per il feedback..
premetto che non si tratta di pre-compiled headers, perchè ho disabilitato questa opzione nelle impostazioni del progetto...

cerco di spiegarlo in estrema sintesi:
io ho cinque header. che possiamo chiamare

head1.h
head2.h
head3.h
head4.h
main_head.h

dove main_head.h include gli altri 4 headers.
inoltre ho 5 file sorgenti.

source1.cpp
source2.cpp
source3.cpp
source4.cpp
source5.cpp

tutti e 5 i sorgenti includono soltanto il file main_head.h
quando vado a compilare tutto ok, poi arrivato al linking mi viene restituito un errore di questo tipo
>source2.obj : error LNK2005: "private: bool __thiscall mhr_dt::beacon_consistency(void)" (?beacon_consistency@mhr_dt@@AAE_NXZ) già definito in source1.obj

e a quanto ho visto i membri a funzione che restituiscono l'errore, sono soltanto quelli definiti al di fuori della classe...

Anche spostando i membri a funzione in un sorgente ad hoc le cose non cambiano...

hibone
17-12-2008, 19:06
Apparentemente ho risolto dichiarando inline i membri a funzione incriminati.
Qualcuno saprebbe spiegarmi se c'è una soluzione più elegante, e possibilmente l'origine del problema?