#ifdef _WIN32 #include HINSTANCE library = NULL; #else #include #include void *library = NULL; #endif #include int loadLib(const char *filename) { if (library) return -1; if (!filename || strlen(filename) == 0) return -2; #ifdef _WIN32 library = LoadLibrary(filename); #else library = dlopen(filename, RTLD_NOW | RTLD_LOCAL); #endif if (!library) return -3; return 0; } int unloadLib() { int retval; if (!library) return -1; #ifdef _WIN32 retval = FreeLibrary(library); #else retval = dlclose(library); #endif library = NULL; return retval; } void *getFunction(const char *funcname) { void* retval; if (!library) { return NULL; } #ifdef _WIN32 retval = GetProcAddress(library, funcname); #else retval = dlsym(library, funcname); #endif if (!retval) return NULL; return retval; }