tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
2481
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Apr 2004
    Ort
    Bbg
    Beiträge
    200
    Also ich habe folgendes Problem:
    ich habe eine Datei namens abc.h
    in dieser Datei definiere ich eine Konstante mit dem keyword [b]const[b]
    außerdem befindet sich in der datei ein Funktionsprototy test(), der
    in der datei abc.cpp definiert wird.
    Wenn ich nun mein Programm compilieren will erhalte ich diesen Linker-Fehler:
    test.obj : error LNK2005: "char const * const mstr" (?mstr@@3PBDB) bereits in abc.obj definiert
    und noch mal zur Veranschaulichung:
    abc.h
    | const char *mstr = "abc";
    | extern void test();
    |--> abc.cpp
    | test() {cout << mstr;}
    |--> test.cpp
    main(blabla...) {test();return0}
    So. Das problem habe ich schon seit 2 Tagen
    in der MSDN steht:
    Der häufigste Grund für diesen Fehler ist das versehentlich gleichzeitige Binden mit den Single-Threaded- und Multithreaded-Bibliotheken. Stellen Sie sicher, daß die Anwendungsprojektdatei nur geeignete Bibliotheken einbezieht und Bibliotheken von Fremdanbietern über entsprechend erstellte Single-Threaded- oder Multithreaded-Versionen verfügen
    bloß sagt mir das ganze nix
    Und wer sich noch mehr verwirren lassen will, bitte:
    MSDN
    Ok, ich bin jetzt mit meinen nerven fertig, gute Nacht
    Angehängte Dateien Angehängte Dateien
     

  2. #2
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Weil du die globale Variable mstr in der abc.h definierst, die sowohl von den Dateien abc.cpp als auch test.cpp (also zweimal) inkludiert wird, hast du die Definiton der Variablen beim Linken zweimal. Besser wäre es, in die Headerdatei dies zu schreiben:
    Code :
    1
    
    extern const char *mstr;
    Dadurch wird die Variable nur deklariert (bekanntgemacht), es wird aber kein Platz dafür reserviert.
    In eine der .cpp-Dateien kommt dann die tatsächliche Deklaration:
    Code :
    1
    
    const char *mstr = "abc";
    Dann sollte alles glatt gehen.
    Geändert von Kachelator (20.07.04 um 17:51 Uhr)
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  3. #3
    Registriert seit
    Apr 2004
    Ort
    Bbg
    Beiträge
    200
    jo, danke
     

  4. #4
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Bitte!

    frager, du fragst zuviel. Leg dir einen anderen Nick zu -- ich habe schon Löcher im Bauch!
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

Ähnliche Themen

  1. [C] VS05 Linker Error LNK2005
    Von Viper2009 im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 22.08.07, 14:43
  2. [MVS2005] Linker Fehler LNK2005
    Von Andrej Dyck im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 31.07.06, 09:19
  3. problem mit Linker
    Von gamerfunkie im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 14.04.06, 21:44
  4. Linker Problem Dev C++
    Von Dudadida im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 01.07.04, 10:48
  5. [MS VC6] Linker-Problem
    Von Marcus Roffmann im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 26.10.02, 21:52