Estoy desarrollando una biblioteca compartida usando C++ en Linux, y me gustaría que esta biblioteca use log4cxx para fines de registro. Sin embargo, no estoy seguro de cómo configurar esto. Para que Log4cxx funcione, necesito crear un objeto logger. ¿Cómo puedo asegurarme de que este objeto se crea cuando se carga mi biblioteca?Cómo inicializar una biblioteca compartida en Linux
sospecho que será más fácil de crear el objeto registrador como una variable global y luego usarlo en cualquiera de los archivos de origen de mi biblioteca, declarándolo como extern en las cabeceras. Pero, ¿cómo puedo hacer que el registrador se cree automáticamente una vez que una aplicación se conecta a la biblioteca?
sé que en DLL para Windows, hay una cosa como REASON_FOR_CALL == PROCESS_ATTACH; ¿Hay algo similar en Linux?
Esto también es válido para las bibliotecas C. También existe el '__ atributo __ ((destructor))' para que se invoque una función cuando la biblioteca está descargada –
... ¿y este atributo no tiene nada que ver con la construcción del objeto? – einpoklum
@einpoklum, a la derecha, esto en su mayoría no está relacionado con la construcción de objetos. Puedes usarlo en C, que no tiene objetos. Dicho esto, C++ usa esto internamente para llamar a constructores y destructores de objetos globales. –