Qui è la mia struttura di cartelle:VS2008: Posso creare un progetto con 2 file CPP con lo stesso nome in diverse cartelle?
/
|
-- program.cpp
-- utility.h
-- utility.cpp
|
-- module/
|
-- utility.h
-- utility.cpp
// Note that I have two files named utility.h and two named utility.cpp
sulla costruzione del progetto, ottengo un errore di collegamento (LNK2028: Token irrisolto e così via ...), dicendo che alcuni simboli non sono definiti. Ho confermato che tutti i simboli sono definiti e che tutte le funzioni dichiarate hanno una definizione corrispondente.
Ho la sensazione che nella compilazione del mio progetto, i file utility.cpp
da entrambe le cartelle siano compilati nello stesso utility.obj
nella cartella di output. Di conseguenza, uno sovrascrive l'altro.
- È questo comportamento previsto?
- Come faccio a creare un binario C++ che ha due file con lo stesso nome (anche se in diverse cartelle)?
quello che stai cercando sono spazi dei nomi –
@fuzzy: questo non ha nulla a che fare con i namespace. Solo uno dei 2 file .obj viene inserito nella fase di collegamento. –
@fuzzy: Diciamo che il primo 'utility.cpp' da compilare definisce tutto sotto namespace' foo_ns' e il secondo 'utilty.cpp' da compilare compila tutto sotto namespace' bar_ns', il compilatore sovrascrive 'utility.obj' quando compilando il secondo 'utility.cpp' ... nel momento in cui il linker si attiva, solo' bar_ns' è disponibile nel file obj. –