class RadiantModuleServer : public ModuleServer
{
-typedef std::pair<CopiedString, int> ModuleType;
-typedef std::pair<ModuleType, CopiedString> ModuleKey;
+typedef std::pair<std::string, int> ModuleType;
+typedef std::pair<ModuleType, std::string> ModuleKey;
typedef std::map<ModuleKey, Module*> Modules_;
Modules_ m_modules;
bool m_error;
return m_library == 0;
}
FunctionPointer findSymbol( const char* symbol ){
- FunctionPointer address = GetProcAddress( m_library, symbol );
+ FunctionPointer address = (FunctionPointer) GetProcAddress( m_library, symbol );
if ( address == 0 ) {
globalErrorStream() << "GetProcAddress failed: '" << symbol << "'\n";
globalErrorStream() << "GetLastError: " << FormatGetLastError();
typedef int ( *FunctionPointer )();
DynamicLibrary( const char* filename ){
- m_library = dlopen( filename, RTLD_NOW );
+ m_library = dlopen( filename, RTLD_NOW|RTLD_LOCAL|RTLD_DEEPBIND );
+ if ( !m_library )
+ {
+ globalErrorStream() << "LoadLibrary failed: '" << filename << "'\n";
+ if ( const char* error = dlerror() )
+ globalErrorStream() << "GetLastError: " << error;
+ }
}
~DynamicLibrary(){
if ( !failed() ) {