Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MCKSys Argentina en 20 Enero 2015, 00:16 am



Título: Problema con Include
Publicado por: MCKSys Argentina en 20 Enero 2015, 00:16 am
Bueno, estoy teniendo problemas a la hora de incluir un header en varios files. He revisado este (https://foro.elhacker.net/programacion_cc/ayuda_problema_enlazando_varios_archivos_fuentes_y_cabeceras-t356410.0.html) post y despues de probar (casi) todas las combinaciones enunciadas ahí, sigo con el problema.

Ni hablar que he estado en varios post de la inet, los cuales aconsejan casi lo mismo que en el post anterior, pero no me está funcionando.

Para hacerlo sencillo, expongo lo que tengo:
Tengo 3 archivos: f1.cpp. f2.cpp y f2.h.

Ambos CCPs hacen un include de f2.h:

f1.cpp
Código
  1. #include "f2.h"
  2.  
  3. int main(){
  4. aNumber = 1;
  5. globalNumber = aNumber + aUnsignedNumber;
  6. return globalNumber;
  7. }
  8.  

f2.cpp
Código
  1. #include "f2.h"
  2.  
  3. void nada(){
  4. aUnsignedNumber = 2;
  5. }
  6.  

f2.h:
Código
  1. #pragma once
  2.  
  3. int aNumber; //variable usada en f1.cpp
  4. unsigned int aUnsignedNumber; //variable usada en f2.cpp
  5. int globalNumber; //Variable global usada en ambos CPPs
  6.  

Estoy en Visual Studio 2013 y al compilar sale:


1>------ Build started: Project: Hola, Configuration: Debug Win32 ------
1>  f1.cpp
1>  Note: including file: e:\proyectos\visualstudio\projects\hola\hola\f2.h
1>f2.obj : error LNK2005: "int aNumber" (?aNumber@@3HA) already defined in f1.obj
1>f2.obj : error LNK2005: "unsigned int aUnsignedNumber" (?aUnsignedNumber@@3IA) already defined in f1.obj
1>f2.obj : error LNK2005: "int globalNumber" (?globalNumber@@3HA) already defined in f1.obj
1>E:\Proyectos\VisualStudio\Projects\Hola\Debug\Hola.exe : fatal error LNK1169: one or more multiply defined symbols found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


He probado colocar #pragma once en cada .cpp y no funciona. También probé usando #ifndef en f2.h (y en ambos .cpp también) y no funciona.

Cualquier ayuda es bienvenida.

PD: En realidad, la estructura que tengo es mas compleja, pero creo que lo anterior es la base del problema. Los CPPs son más y usan tipos de windows.h y demás headers, los cuales incluyo en el .h.


Título: Re: Problema con Include
Publicado por: Eternal Idol en 20 Enero 2015, 03:41 am
extern en las variables en el archivo de cabecera, despues en un solo archivo de codigo la definis.


Título: Re: Problema con Include
Publicado por: MCKSys Argentina en 20 Enero 2015, 06:06 am
Joya.  :)

Gracias!


Título: Re: Problema con Include
Publicado por: Eternal Idol en 20 Enero 2015, 14:28 pm
De nadas  ::)