mehrfach definierte Symbole
-
Ich versuche mein wxWidgets Projekt zu kompilieren, allerdings kriege ich eine ganze Menge Linkerfehler:
Fehler 1 error LNK2005: _exit ist bereits in LIBCMT.lib(crt0dat.obj) definiert. MSVCRT.lib
Fehler 2 error LNK2005: _free ist bereits in LIBCMT.lib(free.obj) definiert. MSVCRT.lib
Fehler 3 error LNK2005: _tolower ist bereits in LIBCMT.lib(tolower.obj) definiert. MSVCRT.lib
Fehler 4 error LNK2005: _isspace ist bereits in LIBCMT.lib(_ctype.obj) definiert. MSVCRT.lib
Fehler 5 error LNK2005: __errno ist bereits in LIBCMT.lib(dosmap.obj) definiert. MSVCRT.lib
Fehler 6 error LNK2005: _malloc ist bereits in LIBCMT.lib(malloc.obj) definiert. MSVCRT.lib(und noch einige solcher mehr).
Die Frage ist jetzt, woher kommt das? Ich linke nur die normalen wxWidgetslibs, und es geht auch eigentlich alles gut, bis das ich eine selbst kompilierte Lib linke, dann tauchen diese Fehler auf.
Ich verwende VC 2008 Express.
Ich habe schon einige Beispiele von wxWidgets kompiliert, das scheint also zu gehen, und ich hatte auch vorher ein Testprogramm für meine lib, welches GLFW benutzt hat und auch einwandfrei lief, jetzt wollte ich damit halt auf wxWidgets umsteigen und es geht irgendwie gar nichts mehr.Was mich halt wundert ist, dass das prinzipiell alles irgendwelche Symbole sind, die ich nie persönlich zu Gesicht bekommen habe, ich habe auch keine seltsamen Linkereinstellungen oder so geändert.
Die Frage ist also, wieso irgendwelche lowlevel standard Sachen auf einmal doppelt da sind, wo ich einfach nur irgendeine andere Lib linke.(ahja, ich versuche das schon seit Freitag und nach 4 Tagen rumprobieren, ohne jeglichen Erfolg hat man echt die Schnauze voll, entsprechend klasse fände ich es, wenn mir jemand helfen könnte
)
-
Sieht für mich so aus, als würdest du in Lib und Programm einmal statisch (Option /MT) und einmal dynamisch (Option /MD) linken. Versuche mal, alles mit /MD zu übersetzen. Laut MSDN musst du dynamisch linken (/MD), wenn du die STL verwenden willst.
Stefan.
-

WTF? Ok, ich frag mich, wie lange man C++ benutzen muss, um sowas so derartig schnell zu wissen, das ist ja genial.
Ich bin ganz sprachlos, das war ja einfach und funktioniert scheinbar wunderbar.Ich glaube ich liebe dieses Forum jetzt schon und hoffe, dass ich euch nicht all zu oft mit blöden Fragen belästigen muss.
Vielen Dank schonmal

-
Arkus schrieb:
WTF? Ok, ich frag mich, wie lange man C++ benutzen muss, um sowas so derartig schnell zu wissen, das ist ja genial.
...
Ich glaube ich liebe dieses Forum jetzt schon und hoffe, dass ich euch nicht all zu oft mit blöden Fragen belästigen muss.Welch Begeisterung.

Ohne die sicherlich grandiose Leistung von DStefan schmälern zu wollen, gebe ich dir trotzdem den Tipp in solchen Fällen anhand des Fehlercodes (in deinem Fall LNK2005) in der Hilfe nachzuschlagen. Da findest du dann auch häufig die entsprechenden nützlichen Hinweise, falls die Fehlermeldung selbst mal nicht ausreichen sollte.
-
Hm, ja.
Ich habe jahrelang mit Codeblocks gearbeitet und wollte jetzt VC nochmal ne Chance geben, da vergisst man schonmal so manches^^
-
Mitleid schrieb:
Arkus schrieb:
WTF? Ok, ich frag mich, wie lange man C++ benutzen muss, um sowas so derartig schnell zu wissen, das ist ja genial.
...
Ich glaube ich liebe dieses Forum jetzt schon und hoffe, dass ich euch nicht all zu oft mit blöden Fragen belästigen muss.Welch Begeisterung.

Ohne die sicherlich grandiose Leistung von DStefan schmälern zu wollen, gebe ich dir trotzdem den Tipp in solchen Fällen anhand des Fehlercodes (in deinem Fall LNK2005) in der Hilfe nachzuschlagen. Da findest du dann auch häufig die entsprechenden nützlichen Hinweise, falls die Fehlermeldung selbst mal nicht ausreichen sollte.
Grandiose Leistung?! Ich habe einfach "LIBCMT" in der MSDN nachgeschlagen und ein Bischen rumgeklickt. Die Antwort zu schreiben hat länger gedauert.

Stefan.
-
Sieht auf den ersten Blick trotzdem aus wie Zauberei ...
