Да. Когда библиотека открыта, происходит все статическое построение ... поэтому, если вы используете C ++, вы можете сделать:
// mylibrary.cpp
namespace
{
class dynamic_library_load_unload_handler
{
public:
dynamic_library_load_unload_handler(){
// Code to execute when the library is loaded
}
~dynamic_library_load_unload_handler(){
// Code to execute when the library is unloaded
}
} dynamic_library_load_unload_handler_hook;
}
В отличие от приведенных решений __attribute__ ((constructor))
, оно будет переносимым. Тем не менее, обратите внимание, что если у вас есть несколько подобных объектов, нет никакой гарантии в отношении порядка строительства / разрушения.