[Visual Studio 2008 Express] Unresolved Externals bei Static Link, fehlerhafte Anwendungskonfiguration bei Dynamic Link



  • Hi Leute.
    Ich bin mir nicht sicher ob das ein Fehler ist, der hier oder in das alternative Libs Unterforum gehört.
    Ich versuche gerade WxWidgets bei mir zum laufen zu bringen und das funktioniert soweit auch ganz gut, aber nur bei Multi-Threaded DLL bei Runtime Library.
    Denn bei Multi-Threaded funktiontioniert es nicht:

    MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __strdup already defined in LIBCMT.lib(strdup.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strchr already defined in LIBCMT.lib(strchr.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _tolower already defined in LIBCMT.lib(tolower.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _isalnum already defined in LIBCMT.lib(_ctype.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _calloc already defined in LIBCMT.lib(calloc.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _atoi already defined in LIBCMT.lib(atox.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strftime already defined in LIBCMT.lib(strftime.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strncmp already defined in LIBCMT.lib(strncmp.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _atol already defined in LIBCMT.lib(atox.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __strnicmp already defined in LIBCMT.lib(strnicmp.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _isalpha already defined in LIBCMT.lib(_ctype.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _isdigit already defined in LIBCMT.lib(_ctype.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _memmove already defined in LIBCMT.lib(memmove.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _isspace already defined in LIBCMT.lib(_ctype.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _exit already defined in LIBCMT.lib(crt0dat.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _realloc already defined in LIBCMT.lib(realloc.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strtol already defined in LIBCMT.lib(strtol.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strtoul already defined in LIBCMT.lib(strtol.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __strtoi64 already defined in LIBCMT.lib(strtoq.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __strtoui64 already defined in LIBCMT.lib(strtoq.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __errno already defined in LIBCMT.lib(dosmap.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strpbrk already defined in LIBCMT.lib(strpbrk.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _abort already defined in LIBCMT.lib(abort.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _setlocale already defined in LIBCMT.lib(setlocal.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __stricmp already defined in LIBCMT.lib(stricmp.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _getenv already defined in LIBCMT.lib(getenv.obj)

    Das scheint aber ein Problem mit Visual Studio zu sein, weil ich es auch so öfter im INternet gefunden habe.
    Immer hieß die Lösung, man solle doch Multi-Threaded DLL verwenden.
    Allerdings verwende ich nunmal VIsual Studio 2008 Express und da tritt dann bekanntlich bei den meisten anderen Benutzern der Fehler "Fehlerhafte Anwendungskonfiguration" auf, sodass ich diesen Modus auch nicht nutzen kann.
    Also muss zumindest eines dieser beiden Probleme auf eine andere Weise gelöst werden.



  • dass deine progs auf anderen rechnern laufen, dafür gibts ja die redistributable packages (dann gehts auch).

    zu deinem Problem: Das tritt auf (nicht nur bei wxw, sondern generell), wenn man eine statisch gelinkte Lib in ein programm einbindet, welches dynamisch laufzeitumgebung hat oder andersrum.

    Sprich: Du musst dein wxw auch mit Multithreaded kompilieren und diese lib dann einbinden.



  • Okay danke, das tats


Anmelden zum Antworten