rendered paste body#include <dlfnc.h>#include <iostream>using namespace std;class MyModule { virtual void Print() {}};typedef MyModule* EntryArea();typedef void DestroyArea(MyModule*);struct MyStruct { MyModule* Object; void* DLHandle; EntryArea* Entry; DestroyArea* Delete;};class ParentClass { private: struct MyStruct Classes[5]; string Shared; public: void Load() { Shared = "./test.so"; Classes[0].DLHandle = dlopen(Shared.c_str(),RTLD_NOW); Classes[0].Entry = (EntryArea*) dlsym(Classes[0].DLHandle,"create"); Classes[0].Delete = (DestroyArea*) dlsym(Classes[0].DLHandle,"destroy"); Classes[0].Object = Classes[0].Entry(); } MyModule* GetObject() { return Classes[0].Object; }};int main() { ParentClass clClass; MyModule* Child; clClass.Load(); Child = clClass.GetObject();} ---- contents of test.so ---- #include <iostream>using namespace std;typedef MyModule* EntryArea();typedef void DestroyArea(MyModule*);struct MyStruct { MyModule* Object; void* DLHandle; EntryArea* Entry; DestroyArea* Delete;};class MyModule { virtual void Print() {}};class TestModule : public MyModule { public: void Print() { cout << "Test" << endl; }};extern "C" MyModule* create() { return new TestModule();}extern "C" void destroy(MyModule* m) { delete m;}