C++在windows下直接调用dll文件中的函数--封装

一、一个简单的dll封装类,方便调用dll中的函数。

// curldemo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include 
#include 
#include 
#include 

using namespace std;

class DllParse {
public:
	DllParse(const string& dllPath) {
		m_hMod = LoadLibraryA(dllPath.data());
	}
	~DllParse() {
		if (nullptr == m_hMod) return;
		FreeLibrary(m_hMod);
		m_hMod = nullptr;
	}
	template 
	typename result_of(Args...)>::type
		ExecFun(const string& funcName, Args&&... args) {
		auto it = m_map.find(funcName);
		if (it == m_map.end()) {
			auto f = GetProcAddress(m_hMod, funcName.c_str());
			m_map.emplace(funcName, f);
			return function((T*)f)(forward(args)...);
		}
		return function((T*)it->second)(forward(args)...);
	}
private:
	HMODULE m_hMod;
	map m_map;
};

int main()
{
	DllParse user32("User32.dll");
	user32.ExecFun\
			("MessageBoxA", NULL, "content", "title", MB_OK);
	getchar();
    return 0;
}


PS: 需要编辑器支持C++11标准



你可能感兴趣的:(CC++)