sharedlibtools_public.cpp (872B)
1 //========= Copyright Valve Corporation ============// 2 #include "sharedlibtools_public.h" 3 #include <string.h> 4 5 #if defined(_WIN32) 6 #include <windows.h> 7 #endif 8 9 #if defined(POSIX) 10 #include <dlfcn.h> 11 #endif 12 13 SharedLibHandle SharedLib_Load( const char *pchPath ) 14 { 15 #if defined( _WIN32) 16 return (SharedLibHandle)LoadLibraryEx( pchPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ); 17 #elif defined(POSIX) 18 return (SharedLibHandle)dlopen(pchPath, RTLD_LOCAL|RTLD_NOW); 19 #endif 20 } 21 22 void *SharedLib_GetFunction( SharedLibHandle lib, const char *pchFunctionName) 23 { 24 #if defined( _WIN32) 25 return (void*)GetProcAddress( (HMODULE)lib, pchFunctionName ); 26 #elif defined(POSIX) 27 return dlsym( lib, pchFunctionName ); 28 #endif 29 } 30 31 32 void SharedLib_Unload( SharedLibHandle lib ) 33 { 34 if ( !lib ) 35 return; 36 #if defined( _WIN32) 37 FreeLibrary( (HMODULE)lib ); 38 #elif defined(POSIX) 39 dlclose( lib ); 40 #endif 41 }