#include #ifdef cpExtensions_OS_Windows #else // cpExtensions_OS_Windows # include #endif // cpExtensions_OS_Windows // ------------------------------------------------------------------------- void* cpPlugins::OS::DLLManager:: Open( const std::string& filename ) { void* hnd = NULL; #ifdef cpExtensions_OS_Windows #else // cpExtensions_OS_Windows hnd = dlopen( filename.c_str( ), RTLD_NOW | RTLD_GLOBAL ); char* error = dlerror( ); if( error != NULL ) throw std::runtime_error( error ); #endif // cpExtensions_OS_Windows return( hnd ); } // ------------------------------------------------------------------------- void cpPlugins::OS::DLLManager:: Close( void* hnd ) { #ifdef cpExtensions_OS_Windows #else // cpExtensions_OS_Windows /* TODO: why this clashes with VTK? -> Unregistering of factories. dlclose( hnd ); dlerror( ); */ #endif // cpExtensions_OS_Windows } // ------------------------------------------------------------------------- void* cpPlugins::OS::DLLManager:: Sym( void* hnd, const std::string& symbol ) { void* sym = NULL; #ifdef cpExtensions_OS_Windows #else // cpExtensions_OS_Windows sym = dlsym( hnd, symbol.c_str( ) ); char* error = dlerror( ); if( error != NULL ) throw std::runtime_error( error ); #endif // cpExtensions_OS_Windows return( sym ); } // eof - $RCSfile$