tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
231
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo zusammen,

    ich bin seit gestern stolzer Besitzer des VS 2010 Prof. und versuche nun seit heute morgen, eines meiner Programme ans laufen zu bekommen. Nachdem ich die üblichen Compilerfehler allesamt beseitigt habe, bleibe ich nun am genannten Linkerfehler LNK2005 hängen.

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    1>      Durchsuchen von C:\Programme\Microsoft Visual Studio 10.0\VC\lib\LIBCMT.lib:
    ...
    1>      Durchsuchen von C:\Programme\Microsoft Visual Studio 10.0\VC\atlmfc\lib\nafxcw.lib:
    1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (****2@YAPAXI@Z) ist bereits in LIBCMT.lib(new.obj) definiert.
    1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (****3@YAXPAX@Z) ist bereits in LIBCMT.lib(delete.obj) definiert.
    1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (****_U@YAPAXI@Z) ist bereits in LIBCMT.lib(new2.obj) definiert.
    1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (****_V@YAXPAX@Z) ist bereits in LIBCMT.lib(delete2.obj) definiert.

    Mittlerweile habe ich einige Dutzend Webseiten ohne wirklichen Erfolg durchforstet.
    Es liegt allerdings inzwischen der Verdacht nahe, dass die Reihenfolge, in der diese Dateien durchsucht werden, wohl nicht unerheblich sein könnte (vgl. http://msdn.microsoft.com/query/dev1...PUT%29&rd=true)

    Ein Kollege arbeitet schon einige Wochen länger mit dem VS2010 und hat die Probleme nicht. Spannenderweise werden bei ihm die beiden Libs in umgekehrter Reihenfolge durchsucht. Wir haben mittlerweile Stück für Stück die Einträge in der Eigenschaftsseite verglichen und auch dort keine (relevanten) Unterschiede feststellen können.

    (a) Wie kann erreichen, dass zuerst "nafxcw.lib" und danach "libcmt.lib" durchsucht wird?
    (b) Hat irgendwer noch einen anderen Tipp für mich ?

    Danke und Gruß
    Klaus

    EDIT:
    Ich vergaß zu erwähnen, dass dieses Problem NUR beim Erstellen der Releaseversion auftritt. Die Debugversion läßt sich erstellen !
    Geändert von vfl_freak (18.08.11 um 14:54 Uhr)
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Du mußt alle deine Bibliotheken und Programme mit der gleichen Laufzeitbibliothek übersetzen.

    Es gibt 4 für C und 4 für C++:

    - Debug DLL
    - DLL
    - Debug Statisch
    - Statisch

    Schau in die Projekteinstellungen unter C/C++ Code Generierung -> Laufzeitbibliothek

    Gruß
    Geändert von deepthroat (18.08.11 um 15:25 Uhr)
    vfl_freak bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo deepthroat,

    erstmal Danke für die schnelle Antwort

    Ich verwende in beiden Fällen die statische Variante, also /MT resp. /MTd.

    Bin jetzt aber gerade beim erneuten lesen (hier: http://support.microsoft.com/kb/148652/en-us) zufällig über die Lösung gestolpert.
    Es ist wohl wirklich entscheidend, die MFC-Libs vor den CRT's zu linken und für die beiden o. g. Libs erreicht man das, indem in den Projekteigenschaften und "Linker/Eingabe" beide ignoriert (dritte Zeile) und dann in der ersten Zeile bei "zusätzliche Abhängigkeiten" in der richtigen Reihenfolge einträgt .....

    Nun ja, compilieren kann ist jetzt - nur noch nicht laufen lassen, da sofort ein Runtime-Error auftritt ... dann werde ich mich mal zuerst mit dem Debugger beschäftigen müssen

    Ein Sch... ist das

    Nochmals Danke und Gruß
    Klaus
    Geändert von vfl_freak (18.08.11 um 15:52 Uhr) Grund: Farbcode eingefügt, um es anderen Suchenden ggf. zu erleichtern :-)
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

Ähnliche Themen

  1. VS2010 Exception während des Debuggens werfen
    Von Akeshihiro im Forum .NET Café
    Antworten: 4
    Letzter Beitrag: 13.07.11, 13:35
  2. Managed Code mit VS2010
    Von Perdan im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 15.06.11, 16:33
  3. Zugriff auf Funktionen der Dialog-Klasse (C++/MFC/VS2010)
    Von lmeinel im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 01.04.11, 16:10
  4. VS2010 WebAnwendung erstellen und einrichten
    Von flowpow im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 26.01.11, 23:27
  5. MFC .exe sehr groß mit VS2010
    Von thekiller im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 19.08.10, 11:42