Aquí es mi estructura de carpetas:VS2008: ¿Puedo construir un proyecto con 2 archivos CPP del mismo nombre en diferentes carpetas?
/
|
-- 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
En la construcción del proyecto, aparece un error de enlace (LNK2028: símbolo sin resolver y así sucesivamente ...) diciendo que algunos símbolos no están definidos. He confirmado que todos los símbolos están definidos y que todas las funciones declaradas tienen una definición correspondiente.
Tengo la sensación de que al compilar mi proyecto, los archivos utility.cpp
de ambas carpetas se compilan en el mismo utility.obj
en la carpeta de salida. Como resultado, uno sobrescribe al otro.
- ¿Este comportamiento es esperado?
- ¿Cómo construyo un archivo binario C++ que tiene dos archivos con el mismo nombre (aunque en carpetas diferentes)?
lo que está buscando son los espacios de nombres –
@fuzzy: Esto no tiene nada que ver con los espacios de nombres. Solo uno de los 2 archivos .obj se está arrastrando al paso de enlace. –
@fuzzy: digamos que la primera 'utility.cpp' que se compila define todo bajo el espacio de nombres' foo_ns' y la segunda 'utilty.cpp' que se compila compila todo bajo el espacio de nombres' bar_ns', el compilador sobrescribe 'utility.obj' cuando compilando el segundo 'utility.cpp' ... para el momento en que el enlazador entra en acción, solo' bar_ns' está disponible en el archivo .obj. –