27 #ifndef SHAREDLOADER_H
28 #define SHAREDLOADER_H
39 template <
typename T >
45 void (*destroy_func)(T *);
55 void Close() {
if(!loaded) { dlclose(cls);loaded =
false; }}
103 cls = dlopen(filename, RTLD_NOW);
106 cerr <<
"Cannot load library: " << dlerror() <<
'\n';
115 typedef T* create_t();
116 create_func = (create_t*)dlsym(cls,
"ObjectCreate");
117 const char* dlsym_error = dlerror();
120 cerr <<
"Cannot load ObjectCreate: " << dlsym_error <<
'\n';
126 typedef void destroy_t(T*);
127 destroy_func = (destroy_t*)dlsym(cls,
"ObjectDestroy");
128 dlsym_error = dlerror();
131 cerr <<
"Cannot load ObjectDestroy: " << dlsym_error <<
'\n';