Ich entwickle eine gemeinsame Bibliothek mit C++ unter Linux, und ich möchte diese Bibliothek log4cxx für Protokollierungszwecke verwenden. Ich bin mir jedoch nicht sicher, wie ich das einrichten soll. Damit log4cxx funktioniert, muss ich ein Logger-Objekt erstellen. Wie kann ich sicherstellen, dass dieses Objekt erstellt wird, wenn meine Bibliothek geladen wird?Wie initialisiert man eine gemeinsame Bibliothek unter Linux
Ich vermute, dass es am einfachsten sein wird, das Logger-Objekt als globale Variable zu erstellen und es dann aus einer der Quelldateien meiner Bibliothek zu verwenden, indem es es als extern in den Headern deklariert. Aber wie kann ich den Logger automatisch erstellen lassen, sobald eine Anwendung eine Verbindung zur Bibliothek herstellt?
Ich weiß, dass in DLLs für Windows, gibt es eine Sache wie REASON_FOR_CALL == PROCESS_ATTACH; Gibt es eine ähnliche Sache unter Linux?
Dies gilt auch für C-Bibliotheken. Es gibt auch das '__attribute __ ((destructor))' für eine Funktion, die aufgerufen wird, wenn die Bibliothek entladen wird –
... und dieses Attribut hat nichts mit der Objektkonstruktion zu tun? – einpoklum
@einpoklum, Recht, das hat meistens nichts mit der Objektkonstruktion zu tun. Sie können es in C verwenden, das keine Objekte enthält. Das heißt, C++ verwendet dies intern, um Konstruktoren und Destruktoren von globalen Objekten aufzurufen. –