Título: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: x64core 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 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 Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: Eternal Idol 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. Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: x64core 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 Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: Ferno en 14 Marzo 2012, 05:43 am En cada header que vos programes es conveniente utilizar la compilación condicional.
Código
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. Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: Eternal Idol en 14 Marzo 2012, 10:09 am Si, tambien podes usar #pragma once para eso en VC++.
Código
Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: armizh 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. Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: Eternal Idol 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++. Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: x64core 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 :)
Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: Eternal Idol 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.
Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: x64core 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 :3sin tanto lio gracias Eternal, ahorita voy a averiguar mas porque lei que no era portable :P Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: Eternal Idol en 15 Marzo 2012, 09:09 am Y no, no lo es, es para VC++, sino como te mostro Ferno antes.
Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: x64core en 15 Marzo 2012, 20:46 pm Hola yo de nuevo :xD
veran e intentado todo lo posible y aun no logro compilar el maldito proyecto, hice una copia en limpio del proyecto que tengo, asi es la estructura, Lo hice lo mas sencillo posible :P no es del todo, me faltan algunas variables externas y escribir funciones pero el codigo se extendera :P aun así ese codigo no se compila y así es como tengo una parte: e probado de todo y pues claro los includes los necestio , por favor ayuda ya tengo 3 dias con ese problema :xD main.cpp Código: #include <Windows.h> my1.h Código: #pragma once my1.cpp Código: #include "my1.h" my2.h Código: #pragma once my2.cpp Código: #include "my2.h" me tira errores: Código: ------ Operación Generar iniciada: proyecto: ERROR 01, configuración: Debug Win32 ------ Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: Eternal Idol en 15 Marzo 2012, 21:36 pm ¿¿Y donde estan los extern?? Lee mi primer respuesta, en my2.h haces lo que te digo que arregles.
PD. Y el extern hace falta si realmente tenes que acceder a esas variables desde otros modulos, sino sacalas directamente de ahi y ponelas en el fuente donde corresponden. Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: x64core en 15 Marzo 2012, 21:52 pm ¿¿Y donde estan los extern?? Lee mi primer respuesta, en my2.h haces lo que te digo que arregles. PD. Y el extern hace falta si realmente tenes que acceder a esas variables desde otros modulos, sino sacalas directamente de ahi y ponelas en el fuente donde corresponden. :xD ;-) sos un capo Eternal llevo dias y tu en min lo resolviste gracias eso era, ya pude compilar! me parece raro quizas esto :S puse las globales en el .cpp correspondiente a cada uno y extern en el que los necesitaba y funciono crei que las globales externas se escribian en el .h :) Título: Re: Ayuda: Problema enlazando varios archivos Fuentes y cabeceras Publicado por: Eternal Idol en 15 Marzo 2012, 21:59 pm De nadas.
|