c++的dll加载问题

C++语言 码拜 7年前 (2017-04-23) 1397次浏览
本人的程序加载dll文件,用动态加载的方式,有可能一个函数被调用多次。本人不想在每个本人的函数里面都声明一次,能不能把全部的dll的函数都声明出来,然后调用。
解决方案

10

保存函数指针,之后不用再动态获取

5

头文件就是干这个用的。

5

引用:
Quote: 引用:

首次声明后保存函数指针,以全局变量、类成员等方式达到可访问即可,之后调用直接通过该指针调用函数。

有没有模版什么的,本人保存不上

typedef   int(*dllFunNameXXX)();
dllFunNameXXX globalFunPtr = NULL;
int sampleFunc()
{
	if (globalFunPtr)
	{
		globalFunPtr();
	}
}
int main(int argc, char** argv)
{
	HINSTANCE   hDllInst = LoadLibrary("dllDemo.dll");
	globalFunPtr = (dllFunNameXXX)GetProcAddress(hDllInst, "dllFunNameXXX");
	if (globalFunPtr)
	{
		globalFunPtr();
	}
	FreeLibrary(hDllInst);
	return 0;
}

5

建一个类,头文件中定义函数指针,cpp中获取到函数,然后你想调函数直接用这个类就行了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++的dll加载问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)