plugin1.cpp:
#include <iostream> static class TestStatic { public: TestStatic() { std::cout << "TestStatic create" << std::endl; } ~TestStatic() { std::cout << "TestStatic destroy" << std::endl; } } test_static;
host.cpp
#include <dlfcn.h> #include <iostream> int main(int argc,char *argv[]) { void* handle = dlopen("./plugin1.so",RTLD_NOW | RTLD_LOCAL ); dlclose(handle); return 0; }
build and run:
>g++ -c plugin1.cpp -o plugin1.o -fPIC >g++ -shared plugin.o -o plugin1.so >g++ host.cpp -o host -ldl >./host >TestStatic create >Segmentation fault
why TestStatic::~TestStatic called at 'exit()' but not at 'dlclose()' ?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With