Sto sviluppando una libreria condivisa usando C++ sotto Linux, e vorrei che questa libreria usasse log4cxx per scopi di registrazione. Tuttavia, non sono sicuro di come impostarlo. Perché log4cxx funzioni, ho bisogno di creare un oggetto logger. Come posso assicurarmi che questo oggetto venga creato quando viene caricata la mia libreria?Come inizializzare una libreria condivisa su Linux
Ho il sospetto che sia più semplice creare l'oggetto logger come variabile globale e quindi utilizzarlo da uno qualsiasi dei file sorgente della mia libreria, dichiarandolo come extern nelle intestazioni. Ma come posso creare automaticamente il logger una volta che un'applicazione si connette alla libreria?
So che in DLL per Windows, c'è una cosa come REASON_FOR_CALL == PROCESS_ATTACH; c'è una cosa simile sotto Linux?
Questo è valido anche per le librerie C. C'è anche il '__attribute __ ((destructor))' per chiamare una funzione quando la libreria viene scaricata –
... e questo attributo non ha nulla a che fare con la costruzione di oggetti? – einpoklum
@einpoklum, giusto, questo è per lo più non correlato alla costruzione di oggetti. Puoi usarlo in C, che non ha oggetti. Detto questo, C++ lo usa internamente per chiamare costruttori e distruttori di oggetti globali. –