dynamiclibrary.cpp

来自「网络游戏通用架构, 这是基于boost和libevent写的一个程序」· C++ 代码 · 共 73 行

CPP
73
字号
#include "dynamiclibrary.h"

/*
The most codes here is from the ICE(www.zeroc.com). Thanks a lot. ;-)
*/

DynamicLibrary::DynamicLibrary()
{
    _hnd= NULL;
}


DynamicLibrary::~DynamicLibrary()
{
    unload();
}


bool DynamicLibrary::load( const string& __filename )
{
#ifdef _WIN32    _hnd = LoadLibrary( __filename.c_str() );#else    int flags = RTLD_NOW | RTLD_GLOBAL;#ifdef _AIX    flags |= RTLD_MEMBER;#endif    _hnd= dlopen( __filename.c_str(), flags );    if( _hnd == 0 ){        // Remember the most recent error in _err.        const char* err= dlerror();        if( err ){            _err= err;        }    }#endif    return _hnd != NULL;
}


void* DynamicLibrary::getSymbol( const string& __name )
{
    if( _hnd ){    #ifdef _WIN32        return GetProcAddress( _hnd, __name.c_str() );    #else        void* result= dlsym( _hnd, __name.c_str() );        if( result == NULL ){            // Remember the most recent error in _err.            const char* err= dlerror();            if( err ){                _err= err;            }        }        return result;    #endif
    }
    return NULL;
}


void DynamicLibrary::unload(void)
{
#ifdef _WIN32    FreeLibrary( _hnd );#else    dlclose( _hnd );#endif
    _hnd= NULL;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?