tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
357
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    samkirchner samkirchner ist offline Rookie
    Registriert seit
    Mar 2009
    Beiträge
    8
    Hallo,

    iwie habe ich mal wieder einen Fehler den ich net verstehen:

    error LNK2005: "struct Kontakt * aKontakte" (?aKontakte@@3PAUKontakt@@A) ist bereits in Anmeldung.obj definiert.


    Leider finde ich die definition in Anmeldung.cpp nicht, zwar verwende ich den array dort auch, aber dafür lege ich ja die struct in der header in den array. Iwo habe ich nen großen Denkfehler doch wo?

    mal alle Codes wo mom. auf den Array aKontakte zugegriffen wird:

    Die datei.h
    HTML-Code:
    #ifndef DATEI_H
    #define DATEI_H
    
    
    
    struct Kontakt{
    	char name[10];
    	char  vorname[10];
    	char strasse[30];
    	int hausnummer;
    	int    plz;
    	char ort[20];
    	char telefon[15];
    	char fax[15];
    	char mail[30];
    }; Kontakt aKontakte[1000];
    
    	void open();
    	void save();
    	void del();
    	void close();
    
    
    #endif
    nun die Datei.cpp

    HTML-Code:
    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include "datei.h"
    
    using namespace std;
    
    //Kontakt  aKontakte[100];
    			//Nochmals anschauen daheim!
    
    
    void open()
    {
      cout<<"Hier wird die Datei geöffnet\n\n";
      
      FILE *stream;
    	stream = fopen ("D:\\Dokumente und Einstellungen\\Kirchner\\Eigene Dateien\\Visual Studio 2005\\Projects\\Kundenverwaltung.xls", "r");
    	if (stream!=NULL)
    	{
    		for (int i=1;i<=99;i++)
    		{
    			fscanf (stream, "%s%s%s%4d%4d%s%s%s%s", &aKontakte[i].name, &aKontakte[i].vorname, &aKontakte[i].strasse, &aKontakte[i].hausnummer, &aKontakte[i].plz, &aKontakte[i].ort, &aKontakte[i].telefon, &aKontakte[i].fax, &aKontakte[i].mail);
    		}
    	fclose(stream);
    	
    	}
    	else
    	{
    		cout<<"Fehler: Datei konnte nicht geöffnet werden\n\n";
    	}
    	
    	
    }
    
    
    
    void close()
    {
      cout<<"Hier wird die Datei geschlossen\n\n";
    }
    
    
    
    void save ()
    {
    	cout<<"Hier wird die Datei gesichert\n\n";
    }
    
    void del()
    {
    	cout<<"Hier wird unwiederruflich gelöscht\n\n";
    }
    und zuletzt noch die Menuefunktionen.cpp

    HTML-Code:
    #include <iostream>
    #include <string>
    #include "main.h"
    #include "datei.h"
    using namespace std;
    //Kontakt aKontakte[1000];
    extern  int kn = 0;
    
    
    void Loeschen()
    {
      cout<<"Wollen Sie diesen Kontakt wirklich loeschen?\n\n";
      del();
    }
    
    
    void Suchen()
    {
        cout<<"Nach wem wollen Sie suchen?\n";
    }
    
    
    void Neu()
    {
    	kn = kn +1;
    	cout<<"Neuer Name";
    	cin>>aKontakte[kn].name;
    
    	save();
    }
    und zu guter letzt die Anmeldung.cpp , da verwende ich jedoch den array net, doch auf das bezieht sich die Fehlermeldung
    HTML-Code:
    #include <iostream>
    #include <string>
    #include "main.h"
    #include "datei.h"
    using namespace std;
    
    int Anmeldung()
    {
      bool zaehler=true;
      int i=0;
      while (zaehler==true)
      {
          
    	  i++;
    	  int pw;
    	  cout<<"PW eingabe\n";
    	  cin>>pw;
    	  if (pw!=2456)	
    	  {
    		  
    	    cout<<"Bitte neuer Versuch!\n";
    	    
    		if (i==3)
    	    {
    			int Best;
    			cout<<"Ihr Konto wurde vorläufig wegen 3maliger Fehleingabe gesperrt\n";
    		    cout<<"Bitte mit Taste bestätigen\n";
    		    cin>>Best;
    			(exit(-1));
    
    			
    	    }
    	  }
    	  else
    	  {
    	    zaehler=false;
    	  }
    		
      }
    	open();
    
        return 0;
    }


    Der Sinn von dem Programm was mein ins. zweites sein soll ist ein Adressbuch, man mus einfügen, suchen, neu erstellen und löschen können. Hoffe das hilft euch weiter.

    Hoffe Ihr versteht mein Problem, denn das habe ich schon seit gestern

    Danke und LG Sam
    Geändert von samkirchner (27.08.09 um 10:39 Uhr)
     

  2. #2
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Das Array aKontakte wird in jeder .cpp-Datei neu an einen anderen Speicherplatz gelegt. Du müsstest entweder schreiben:
    static Kontakte aKontakte[100];

    oder du machst es folgendermassen:
    extern Kontakte aKontakte[100];

    und in einer .cpp-Datei dann (z.B. Datei.cpp) Kontakte aKontakte[100];
     

  3. #3
    samkirchner samkirchner ist offline Rookie
    Registriert seit
    Mar 2009
    Beiträge
    8
    ok, mit static Kontakt aKontakte[1000];


    gings, was macht das static denn genau, bzw warum ging es mit dem extern nicht?
     

  4. #4
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Mit extern funktioniert es einwandfrei!

    Bezüglich static:
    http://msdn.microsoft.com/en-us/libr...xd(VS.80).aspx
     

Ähnliche Themen

  1. error LNK2005 und #pragma once
    Von noZmo im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 21.07.09, 08:07
  2. Antworten: 8
    Letzter Beitrag: 02.03.09, 11:16
  3. [C] VS05 Linker Error LNK2005
    Von Viper2009 im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 22.08.07, 14:43
  4. [MVS2005] Linker Fehler LNK2005
    Von Andrej Dyck im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 31.07.06, 09:19
  5. [C++] Linker Problem (LNK2005)
    Von frager im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 20.07.04, 20:08