Ayuda: Problema enlazando varios archivos Fuentes y cabeceras

Iniciado por x64core, 13 Marzo 2012, 21:55 PM

0 Miembros y 1 Visitante están viendo este tema.

Eternal Idol

Y no, no lo es, es para VC++, sino como te mostro Ferno antes.
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

#11
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
#include <Windows.h>
#include "my1.h"
#include "my2.h"

int WINAPI WinMain(HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nCmdShow)
{
// codigo...
return 0;
}


my1.h
#pragma once
#include <Windows.h>
// declaraciones...


my1.cpp
#include "my1.h"
#include "my2.h"
// codigo...


my2.h

#pragma once
#include <Windows.h>

HANDLE var = NULL;
char mypath[256] = {0};

char* lpbasepath = NULL;
char* lpIndexpath = NULL;

char* lplabel1 = NULL;
char* lplabel2 = NULL;
// demas declaraciones..


my2.cpp
#include "my2.h"
// codigo...



me tira errores:


------ Operación Generar iniciada: proyecto: ERROR 01, configuración: Debug Win32 ------
1>  Main.cpp
1>  Generando código...
1>  Compilando...
1>  my2.cpp
1>  my1.cpp
1>  Generando código...
1>my1.obj : error LNK2005: ya se definió "void * var" (?var@@3PAXA) en Main.obj
1>my1.obj : error LNK2005: ya se definió "char * mypath" (?mypath@@3PADA) en Main.obj
1>my1.obj : error LNK2005: ya se definió "char * lpbasepath" (?lpbasepath@@3PADA) en Main.obj
1>my1.obj : error LNK2005: ya se definió "char * lpIndexpath" (?lpIndexpath@@3PADA) en Main.obj
1>my1.obj : error LNK2005: ya se definió "char * lplabel1" (?lplabel1@@3PADA) en Main.obj
1>my1.obj : error LNK2005: ya se definió "char * lplabel2" (?lplabel2@@3PADA) en Main.obj
1>my2.obj : error LNK2005: ya se definió "void * var" (?var@@3PAXA) en Main.obj
1>my2.obj : error LNK2005: ya se definió "char * mypath" (?mypath@@3PADA) en Main.obj
1>my2.obj : error LNK2005: ya se definió "char * lpbasepath" (?lpbasepath@@3PADA) en Main.obj
1>my2.obj : error LNK2005: ya se definió "char * lpIndexpath" (?lpIndexpath@@3PADA) en Main.obj
1>my2.obj : error LNK2005: ya se definió "char * lplabel1" (?lplabel1@@3PADA) en Main.obj
1>my2.obj : error LNK2005: ya se definió "char * lplabel2" (?lplabel2@@3PADA) en Main.obj
1>C:\Users\Raul\Documents\ERROR 01\Debug\ERROR 01.exe : fatal error LNK1169: se encontraron uno o más símbolos definidos simultáneamente


Eternal Idol

#12
¿¿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.
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

Cita de: 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.

: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  :)

Eternal Idol

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