C/Visual C - proyecto en VC 6

 
Vista:

proyecto en VC 6

Publicado por Miguwk (3 intervenciones) el 28/03/2006 18:21:36
en mi proyecto de VC6 tengo varios archivos cpp y h
en un archivo llamada megaman.h
tengo esto

bool hTileCollision = false;

al hacer en otro archivo

#include "megaman.h" y querer compilar en enlazador me manda esto

hscroll.obj : error LNK2005: "bool hTileCollision" (?hTileCollision@@3_NA) already defined in cutman.obj
main.obj : error LNK2005: "bool hTileCollision" (?hTileCollision@@3_NA) already defined in cutman.obj
megaman.obj : error LNK2005: "bool hTileCollision" (?hTileCollision@@3_NA) already defined in cutman.obj
mscreen.obj : error LNK2005: "bool hTileCollision" (?hTileCollision@@3_NA) already defined in cutman.obj
Release/megaman remake.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

si hago

static bool hTileCollision = false;

todo va bien, pero no puedo acceder a esta variable desde otros archivos fuentes, pues es static osea privada solo al archivo fuente dond esta declarado

¿ como pudeo solucionar esto ?, pues necesito accedes a estar variable desdeotros archivos fuentes
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:proyecto en VC 6

Publicado por fernando.gomez (1603 intervenciones) el 28/03/2006 18:45:26
El problema es que la declaras en un h, cuando lo tienes que declarar en un cepepé. La declaras una vez, usualmente en StdAfx o algún archivo precompilado, pero si no en cualquiera estaría bien, por ejemplo, en megaman.cpp.

bool hTileCollision = false;

Luego en todos los cepepés donde emplees hTileCollision, antes de usarla tienes que poner la siguiente sentencia:

extern bool hTileCollision;

Con esto le indicas al compilador que hTileCollision existe y se declaró en algún otro lugar, y que no se preocupe. El compilador no reclamará por no encontrar la implementación de la variable. El enlazador es el que se encargará de todo, y como ya la encontró en algún lugar (i.e. megaman.cpp) ya no tendrá problemas.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:proyecto en VC 6

Publicado por Miguwk (3 intervenciones) el 28/03/2006 21:11:46
gracias por la rapida y acertada respuesta =)
ahora todo va bien =D
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar