Statische Lib /MT, Anwendung auch /MT, zwei CRT Instanzen?



  • Hi!

    Ich versuche gerade, eine statische Lib von "libcurl" zu erstellen, ohne dass es DLL-Abhängigkeiten gibt.
    Da fand ich eine Aussage, dass wenn die libcurl die CRT nun statisch linkt (/MT), und die Anwendung, welche die libcurl dann nutzt, die CRT auch statisch linkt, es dann zwei Instanzen der CRT gibt.

    Ist das problematisch? Üblich? Gibt es keinen anderen Weg?

    Ist man nun gezwungen, die CRT der libcurl dynamisch zu linken (/MD) und eine Redist am Zielrechner zu installieren?

    Ich blick da überhaupt nicht durch 😕


  • Mod

    Nein bei einer statischen lib müssen beide gegen die selbe CRT gelinkt werden.
    Wenn also beide statisch gegen die CRT linken, dann gibt es keine zwei CRT Instanzen, sondern nur ein.

    Die CRT wird ja nicht in die statische LIB mit eingebunden, sondern erst gelinkt, wenn die EXE gelinkt wird.



  • Zwei Instanzen bekommst du, wenn EXE und eine DLL die CRT statisch linken.



  • Aha, ok.
    Allerdings erstelle ich auch eine DLL, welche die CRT statisch linkt.

    Also bleiben die Fragen offen.



  • Das DLL hat eine eigene instanz der CRT. Das ist erstmal nicht weiter tragisch, nur müssen Allokationen mit der gleichen CRT freigegeben werden, sonst BUMM!

    (statische CRT hat sogar einige Vorteile, wenn das DLL in verschiedenen Clients verwendet wird)



  • Ok, dann mache ich mir erstmal nicht weiter Gedanken.
    new in einer und delete in der anderen Instanz zu machen würde mir wohl eh nicht in den Sinn kommen.

    MfG


  • Mod

    Link0r schrieb:

    Ok, dann mache ich mir erstmal nicht weiter Gedanken.
    new in einer und delete in der anderen Instanz zu machen würde mir wohl eh nicht in den Sinn kommen.

    Naja! Bei einer statischen LIB würde ich aber genau davon ausgehen, dass dies möglich ist.



  • Tja, wenn es das CRT-DLL gefrickel nicht gäbe... aber musste ja sein 🙄


Anmelden zum Antworten