Ich habe ein MS C++-Projekt (nennen wir es Projekt A), das ich derzeit als statische Bibliothek (.lib) kompiliere. Es definiert eine globale Variable foo. Ich habe zwei andere Projekte, die separat kompiliert werden (nennen wir sie B bzw. C) und jeweils die gemeinsame statische Bibliothek A einbinden. Sowohl B als auch C sind dlls, die am Ende im selben Prozess geladen werden. Ich möchte eine einzelne Instanz von foo aus A zwischen B und C im selben Prozess teilen: ein Singleton. Ich bin mir nicht sicher, wie ich das Singleton-Muster hier mit Projekt A erreichen kann, da es statisch in B und C separat kompiliert wird. Wenn ich foo sowohl in B als auch in C als extern deklariere, erhalte ich unterschiedliche Instanzen in B und C. Die Verwendung eines standardmäßigen, einfachen Singleton-Klassenmusters mit einer statischen getInstance-Methode führt zu zwei statischen foo-Instanziierungen.
Gibt es eine Möglichkeit, dies zu erreichen, während Projekt A statisch in B und C kompiliert wird? Oder muss ich A zu einer DLL machen?