Frost Moon Project

Src/sslib/Library.cpp -MagicPNG Ver.1.00- - Frost Moon Project   アクセスランキング  

Home > ソフトウェア > MagicPNG > MagicPNG100.zip > Src > sslib > Library.cpp

 
//Library.cpp
//ライブラリ読み込み

#include"../StdAfx.h"
#include"sslib.h"

namespace sslib{

Library::Library():
    m_module(NULL),
    m_library_name(),
    m_library_prefix(){
}

Library::Library(const TCHAR* library_name):
    m_module(NULL),
    m_library_name(library_name),
    m_library_prefix(){
}

Library::Library(const TCHAR* library_name,const TCHAR* library_prefix):
    m_module(NULL),
    m_library_name(library_name),
    m_library_prefix(library_prefix){
}

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

//ライブラリを読み込む
bool Library::load(){
    unload();

    if(!m_library_name.empty())return load(m_library_name.c_str(),m_library_prefix.c_str());
    else return false;
}

//ライブラリを読み込む
bool Library::load(const TCHAR* library_name,const TCHAR* library_prefix){
    unload();

    if(library_name==NULL)return load();

    if((m_module=::LoadLibrary(library_name))!=NULL){
        m_library_name=library_name;
        setPrefix(library_prefix);
        return true;
    }
    return false;
}

//ライブラリを解放する
bool Library::unload(){
    if(m_module!=NULL){
        ::FreeLibrary(m_module);
        m_module=NULL;
        return true;
    }
    return false;
}

//プレフィックスを設定
void Library::setPrefix(const TCHAR* library_prefix){
    if(library_prefix!=NULL)m_library_prefix=library_prefix;
}

//プレフィックスをクリア
void Library::clearPrefix(){
    m_library_prefix.clear();
}

//関数のアドレスを取得
FARPROC WINAPI Library::getAddress(const TCHAR* proc_name_format,...){
    if(proc_name_format==NULL)return NULL;

    if(!isLoaded()&&!load())return NULL;

    va_list argp;
    va_start(argp,proc_name_format);
    tstring proc_name=format(proc_name_format,argp);
    va_end(argp);

#ifndef UNICODE
    return ::GetProcAddress(m_module,(m_library_prefix+proc_name).c_str());
#else
    return ::GetProcAddress(m_module,str::utf162sjis(m_library_prefix+proc_name).c_str());
#endif
}

//namespace sslib
}


Home > ソフトウェア > MagicPNG > MagicPNG100.zip > Src > sslib > Library.cpp