• Viernes 1 de Noviembre de 2024, 10:41

Autor Tema:  Error Lnk2005  (Leído 1087 veces)

pix

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Error Lnk2005
« en: Lunes 2 de Junio de 2008, 12:45 »
0
Hola, al hacer el build me sale este error:

>main.obj : error LNK2005: "int * * mat" (?mat@@3PAPAHA) already defined in Ident.obj
1>main.obj : error LNK2005: "int * * matran" (?matran@@3PAPAHA) already defined in Ident.obj
1>D:\Programación C++\programaII\ident_estat\Debug\ident_estat.exe : fatal error LNK1169: one or more multiply defined symbols found
1>Build log was saved at "file://d:\Programación C++\programaII\ident_estat\ident_estat\Debug\BuildLog.htm"

estas variables estan definidas en el .h antes de la clase. He estado leyendo cómo solucionarlo y una opción es ponerles antes extern pero no me funciona. No sé que tengo que hacer para solucionarlo. Os dejo mi código:

MAIN.CPP
#include <stdio.h>
#include <stdlib.h>
#include "ident.h"
#include <time.h>
#include<conio.h>
#include<string.h>
#pragma once
//#include "stdafx.h"
#pragma warning(disable : 4996)


void main()
{
   FILE *fichero1;
   FILE *fichero2;
   FILE *fichero3;
   
   
   Ident one;
   char c[20];
   
   ARBOL raiz=NULL;        
...

IDENT.H
#pragma once
#include <stdio.h>
//#include <conio.h>
#include <stdlib.h>




#ifndef __IDENT__
#define __IDENT__
#define N 129   //numero de filas de la matriz de transiciones
#define M 14//numero de columnas de la matriz de transiciones

struct nodoarbol{                        //ESTRUCTURA DEL ARBOL
      int est;
      int tran[4];
      struct nodoarbol *izqnodo;
      struct nodoarbol *hernodo;
      struct nodoarbol *dernodo;
   };
   typedef struct nodoarbol NODO;    //DEFINICION DE TIPO NODO
   typedef NODO *ARBOL;              //DECLARACION DE VARIABLE PUNTERO A NODO
int** matran;
int** mat;
class Ident
{

public:

   Ident(void);
   void leersecuencia(FILE *fin,FILE *fout);   //almacena las secuencias de entrada y salida en matriz
   void escribirmatriz(FILE *fconf);         //escribe resultado en fichero de salida
   void escribirtran();                  //crea una matriz con las transicones por niveles
   void creararbol (ARBOL *nod);
   ~Ident(void);
};
#endif

IDENT.CPP
#include "Ident.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#pragma once

Ident::Ident(void)
{


}


                  
void Ident::leersecuencia(FILE *fin,FILE *fout)
{
}void Ident::escribirmatriz(FILE *fconf)
{
}
void Ident::escribirtran()
{
}
....

A ver si me podeis ayudar.
Muchas gracias.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Error Lnk2005
« Respuesta #1 en: Lunes 2 de Junio de 2008, 17:33 »
0
Hace eso, en el .H van con extern y despues en un solo .CPP los definis (sin el extern claro).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.