elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras  (Leído 5,632 veces)
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« en: 13 Marzo 2012, 21:55 pm »

Hola a todos bueno os cuento que tengo un problemon veran tengo varios archivos fuentes (.cpp) cada uno con un
header (.h) por ejemplo:

main1.cpp + main1.h
main2.cpp + main2.h

e leido un poco sobre programacion modular por eso mismo y porque es mas ordenado y limpio verdad, entonces
en los header de algunos fuentes necesito declarar la windows.h porque necesito declarar variables como HANDLE o constantes
como NULL... y asi...

entonces a la hora de compilar me muestra errores de enlazado como:

Código:
1>  other.cpp
1>Main.obj : error LNK2005: ya se definió "void * HL" (?HL@@3PAXA) en k.obj
1>Main.obj : error LNK2005: ya se definió "char * PL" (?PL@@3PADA) en k.obj
1>Main.obj : error LNK2005: ya se definió "long totBytes" (?totBytes@@3JA) en k.obj
1>Main.obj : error LNK2005: ya se definió "char * lpB" (?lpB@@3PADA) en k.obj
1>Main.obj : error LNK2005: ya se definió "char * lpInd" (?lpInd@@3PADA) en k.obj
1>Main.obj : error LNK2005: ya se definió "char * lplblNd" (?lplblNd@@3PADA) en k.obj
1>Main.obj : error LNK2005: ya se definió "char * lplblCb" (?lplblCb@@3PADA) en k.obj
1>MagL.obj : error LNK2005: ya se definió "void * HL" (?HL@@3PAXA) en k.obj
1>MagL.obj : error LNK2005: ya se definió "char * PL" (?PL@@3PADA) en k.obj
1>MagL.obj : error LNK2005: ya se definió "long totBytes" (?totBytes@@3JA) en k.obj
1>MagL.obj : error LNK2005: ya se definió "char * lpB" (?lpB@@3PADA) en k.obj
...

recuerdo haber encontrado un tutorial que mostraba eso de incluir archivos de cabecera aninados y multpliques pero
que exactamente creo que es lo me pasa pero no lo logro encontrarlo de nuevo! :@

Alguien Sabe como puedo solucionar esto? osea alguna pagina donde lo muestre tambien encontre una forma
usando una condiciones de precompilacion (#if,#else) pero la verdad no me gusto mucho :P
nose si solo existe esa forma :P gracias gente


En línea

Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.705


15 años en el foro.


Ver Perfil WWW
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #1 en: 13 Marzo 2012, 22:37 pm »

En la cabecera declaras como extern y despues lo definis en el fuente una vez.

PD. Mejor usa nombres de variables mas largos, asi tienen sentido al leerlos y solo declara en las cabeceras lo que realmente sea para exponer a otros modulos.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #2 en: 14 Marzo 2012, 00:38 am »

En la cabecera declaras como extern y despues lo definis en el fuente una vez.

PD. Mejor usa nombres de variables mas largos, asi tienen sentido al leerlos y solo declara en las cabeceras lo que realmente sea para exponer a otros modulos.

Si, declaro las variables que necesito en otros modulos como extern hasta ese punto creo que todo bien :P
el problema es que por ejemplo tengo

main.cpp
main1.cpp + main1.h
main2.cpp + main2.h

el main.cpp es el principal incluyo a Windows.h ( porque necesito APIs,constantes,etc) e incluyo tambien a main1.h y main2.h
( porque necesito las funciones variables, etc) luego en main1.h y main2.h tambien incluyo a windows.h por la misma razon.
y tambien en main1.h incluyo a main2.h porque necesito usar las funciones de main2.h :P
creo que ese es el problema x3


En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #3 en: 14 Marzo 2012, 05:43 am »

En cada header que vos programes es conveniente utilizar la compilación condicional.

Código
  1. #ifndef _HeaderName_
  2. #define _HeaderName_
  3. /*Código del header*/
  4. #endif
  5.  

Es probable que el compilador esté pasando varias veces por el mismo lado.

EDIT: Me faltó el _HeaderName_ en la primer línea del code. Perdón y gracias Eternal Idol.
« Última modificación: 14 Marzo 2012, 15:09 pm por Ferno » En línea

Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.705


15 años en el foro.


Ver Perfil WWW
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #4 en: 14 Marzo 2012, 10:09 am »

Si, tambien podes usar #pragma once para eso en VC++.

Código
  1. #ifndef _HeaderName_
  2. #define _HeaderName_
  3. /*Código del header*/
  4. #endif
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
armizh

Desconectado Desconectado

Mensajes: 187

His brain caught in a hole...


Ver Perfil WWW
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #5 en: 14 Marzo 2012, 16:35 pm »

Si aun asi no resulta, puedes probar a pasar el argumento zmuldefs al linker (en estos momentos no recuerdo con cual argumento de g++ se hacia, pero en la ayuda dice) el cual permite alojar multiples definiciones.

Saludos.
En línea

Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código
  1. git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
  1. git clone https://github.com/armizh/Hamster
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.705


15 años en el foro.


Ver Perfil WWW
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #6 en: 14 Marzo 2012, 16:49 pm »

Si aun asi no resulta, puedes probar a pasar el argumento zmuldefs al linker (en estos momentos no recuerdo con cual argumento de g++ se hacia, pero en la ayuda dice) el cual permite alojar multiples definiciones.

Saludos.

La proxima vez lee el hilo completo y con atencion, es obvio que no usa g++.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #7 en: 14 Marzo 2012, 18:05 pm »

Hey gracias ya hice pruebas y parace que si funciona ahora solo me toca adaptarlo al proyecto sera algo lioso :)
En línea

Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.705


15 años en el foro.


Ver Perfil WWW
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #8 en: 14 Marzo 2012, 18:52 pm »

RHL: #pragma once al comienzo de la cabecera es bien simple; igual revisa todo y trata de estructurarlo mejor.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras
« Respuesta #9 en: 15 Marzo 2012, 03:32 am »

RHL: #pragma once al comienzo de la cabecera es bien simple; igual revisa todo y trata de estructurarlo mejor.
;-) exacto lo que necesitaba :3
sin tanto lio gracias Eternal, ahorita voy a averiguar mas porque lei que no era portable :P
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda subir varios archivos
PHP
kakashi20 4 4,095 Último mensaje 20 Febrero 2011, 07:54 am
por Castg!
[AYUDA] Problemas enlazando a SDL
Programación C/C++
Almamu 0 809 Último mensaje 16 Enero 2015, 17:17 pm
por Almamu
C++. Cargar una matriz de struct usando archivos de cabeceras
Programación C/C++
LeoXsiempre 2 1,995 Último mensaje 10 Abril 2015, 00:34 am
por LeoXsiempre
Ayuda problema con Multiples Fuentes en Java
Java
Mario Olivera 0 1,136 Último mensaje 28 Noviembre 2015, 12:42 pm
por Mario Olivera
Separar un programa en varios archivos fuentes:
Programación C/C++
fafafa01 6 2,455 Último mensaje 27 Diciembre 2016, 01:42 am
por Borito30
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines