Laufzeitbibliothek



  • Hallo

    Kann mir jemand in einfachen Worten erklären was mit der Einstellung Laufzeitbibliothek gemacht wird.

    Und worin die Unterschiede bei /MT und /MD sowie /MTd und /MDd liegen. Wann wähle ich was aus?

    Und was hat dies im Zusammenhang mit dem zu tun wie ich die MFC verwende. Hier hatte ich schon das Problem wenn ich auf statisches Linken umgestellt habe, dass ich auch hier was ändern mußte.

    Grüße



  • Keiner eine Erklärung?





  • Ja deshalb auch meine Formulierung: "in einfachen Worten"


  • Mod

    Bzgl. CRT:
    1. Die /M?d Versionen (also die mit dem kleinen d am Ende) sind die Debug Versionen. Die anderen die Release Versionen.
    2. /MD /MDd benötigt die installierten MS-CRT Runtime DLLs. Die CRT wird also aus diesen DLLs verwenden.
    z.B: fopen Codestehtin der DLL und wird aus Deiner EXE/DLL heraus in dieser DLL ausgeführt.
    3. /MT /MTd benutzt keine externen DLLs, die CRT wird statisch in Deine EXE eingebunden.
    z.B: ist der fopen Code dann Bestandteil Deiner EXE.

    Bzgl: MFC.
    4. Wird die MFC als dynamische Version erzeugt (verwendet externe installierte MFC-Runtimes), dann impliziert dies auch /MD /MDd.
    5. Wird die MFC statisch gelinkt, dann muss auch die CRT statisch gebunden werden. Es impliziert also /MT /MTd.

    Für letztere Fälle gibt es entsprechende checks in
    c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h

    #if defined(_AFXDLL) && !defined(_DLL)
    	#error Please use the /MD switch for _AFXDLL builds
    #endif
    

    und
    c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h

    #ifdef _DLL
    #ifndef _AFXDLL
    #error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
    #endif
    #endif
    

    HTH



  • @ Martin Richter: Ja hat geholfen. THX.


Anmelden zum Antworten