C++11 DllParser

C++11 DllParser,第1张

概述本文章向大家介绍C++11 DllParser,主要包括C++11 DllParser使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

#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 GetFunction(const string& funcname)

{

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((T*)(it->second));

}

template

typename result_of(Args...)>::type ExcecuteFunc(string& funcname,Args&&... args)

{

auto f = GetFunction(funcname);

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 m_map;

};

int main()

{

/*

类似于如下调用

auto max = ExcecuteFunc("Max",5,8);

auto ret = ExecuteFunc<"Get",5);

*/

}

总结

以上是内存溢出为你收集整理的C++11 DllParser全部内容,希望文章能够帮你解决C++11 DllParser所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1264365.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存