Programación General > Visual C++

 Error Lnk2005

(1/1)

pix:
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:
Hace eso, en el .H van con extern y despues en un solo .CPP los definis (sin el extern claro).

Navegación

[0] Índice de Mensajes

Ir a la versión completa