#include "server.h"
#include "debugging/debugging.h"
-#include "warnings.h"
-#include <vector>
#include <map>
+#include <vector>
#include "os/path.h"
#include "modulesystem.h"
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_LOCAL
+ | RTLD_NOW
+ #ifndef __APPLE__
+ | RTLD_DEEPBIND
+ #endif
+ );
+ if ( !m_library )
+ {
+ globalErrorStream() << "LoadLibrary failed: '" << filename << "'\n";
+ if ( const char* error = dlerror() )
+ globalErrorStream() << "GetLastError: " << error;
+ }
}
~DynamicLibrary(){
if ( !failed() ) {