Ho un progetto MS C++ (chiamiamolo progetto A) che sto attualmente compilando come libreria statica (.lib). Definisce una variabile globale foo. Ho altri due progetti che compilano separatamente (li chiamano rispettivamente B e C) e collegano la libreria statica A in comune. Sia B che C sono dll che vengono caricati nello stesso processo. Vorrei condividere una singola istanza di foo da A tra B e C nello stesso processo: un singleton. Non sono sicuro di come realizzare il modello singleton qui con il progetto A poiché è compilato staticamente in B e C separatamente. Se dichiaro foo come extern sia in B che in C, finisco con diverse istanze in B e C. L'uso di un modello di classe standard semplice e semplice con un metodo getInstance statico genera due istanze statiche foo.Variabile globale condivisa nella libreria statica C++
Esiste un modo per ottenere ciò mentre il progetto A è compilato staticamente in B e C? O devo rendere A una DLL?
* "Se dichiaro foo come extern sia in B che in C, finisco con diverse istanze in B e C." * - è proprio vero? –
Sembra vero: è il comportamento che osservo quando passo il programma mentre eseguo il debug. Vedo il costruttore per foo chiamato due volte e gli indirizzi delle variabili extern g_Foo sono diversi nei due moduli B e C. Non dovrebbe essere così? – Zach
possibile duplicato di [Come implementare la variabile globale del processo in C++?] (Http://stackoverflow.com/questions/669989/how-to-implement-process-global-variable-in-c) – Zach