
#include "pch.h"
#include
#include
#include
#include
#include
using namespace std;
class DllParser
{
public:
DllParser():m_hMod(nullptr)
{
}
~DllParser()
{
UnLoad();
}
bool Load(const std::string & dllPath)
{
m_hMod = LoadlibraryA(dllPath.data());
if (nullptr == m_hMod)
{
cout << "Loadlibrary Failed" << endl;
}
return true;
}
bool UnLoad()
{
if (nullptr == m_hMod)
return true;
auto b = Freelibrary(m_hMod);
if (!b)
return false;
m_hMod = nullptr;
return true;
}
template
function
{
auto it = m_map.find(funcname);
if (it == m_map.end())
{
auto addr = GetProcAddress(m_hMod,funcname.c_str());
if (!addr)
return nullptr;
m_map.insert(make_pair(funcname,addr));
it = m_map.find(funcname);
}
return function
}
template
typename result_of
{
auto f = GetFunction
if (nullptr==f)
{
string s = "can not find this function "+funcname;
throw exception(s.c_str());
}
return f(forward(args)...);
}
private:
HMODulE m_hMod;
map
};
int main()
{
/*
类似于如下调用
auto max = ExcecuteFunc
auto ret = ExecuteFunc
*/
}
总结以上是内存溢出为你收集整理的C++11 DllParser全部内容,希望文章能够帮你解决C++11 DllParser所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)