2013-07-09 37 views
8

Dire che questa funzione si chiama DoThis (const char * abc) in un file chiamato one.cpp. Quindi quando provo a chiamare questa funzione da un'altra funzione in un file sorgente diverso (two.cpp), ottengo l'errore: errore LNK2001: simbolo esterno non risolto (C++), anche se ho usato # include "one.h" Cosa sarebbe Lo faccio per risolvere questo?errore LNK2001: simbolo esterno non risolto (C++)

+0

È anche definito in one.h – Enigma

+0

La funzione DoThis è definita nell'intestazione. – user2549990

+0

entrambi i file sono collegati al progetto? – Enigma

risposta

11

Ciò significa che la definizione della funzione non è presente nel programma. Hai dimenticato di aggiungere questo one.cpp al tuo programma.

Cosa "aggiungere" significa in questo caso dipende dall'ambiente di costruzione e dalla sua terminologia. In MSVC (visto che apparentemente si usa MSVC) si dovrebbe aggiungere one.cpp al progetto.

In termini più pratici, applicabili a tutte le metodologie di compilazione tipiche, quando si collega il programma, manca il file oggetto creato con il modulo one.cpp.

+0

Ma cosa succede se il mio file è un file di intestazione che causa una classe astratta? Mi dispiace di scavare vecchio post :) –

+0

@Niklas Vest: se tutto è lì, nell'intestazione, il compilatore/linker dovrebbe essere in grado di trovare tutto senza problemi. Cioè LNK2001 semplicemente non si verificherà. Inserendo elementi inappropriati nei file di intestazione solitamente si alza il rischio di LNK2005, che si trova dall'altra parte dello spettro: troppe definizioni. – AnT

3

Sembra che tu stia utilizzando Microsoft Visual C++. Se questo è il caso, allora la maggior parte delle possibilità è che non si compila il tuo due.cpp con one.cpp (one.cpp è l'implementazione per one.h).

Se siete da linea di comando (cmd.exe), quindi provare questa prima: cl -o two.exe one.cpp two.cpp

Se siete da IDE, fare clic destro sul nome del progetto dalla soluzione Esplora. Quindi seleziona Aggiungi, Elemento esistente .... Aggiungi one.cpp al tuo progetto.

Problemi correlati