dll字节集加载到内存中调用
要将一个.dll文件加载到内存中并调用其中的函数,可以按照以下步骤进行:
-
使用LoadLibrary函数加载.dll文件,返回一个模块句柄。
-
使用GetProcAddress函数获取.dll文件中需要调用的函数的地址。
-
使用函数指针调用该函数,可以将返回值保存到变量中。
-
使用FreeLibrary函数释放模块句柄。
以下是一个示例代码:
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
HMODULE hModule = LoadLibrary(L"example.dll");
if (hModule == NULL)
{
cout << "LoadLibrary failed" << endl;
return -1;
}
typedef int(*pFunc)(int, int);
pFunc func = (pFunc)GetProcAddress(hModule, "add");
if (func == NULL)
{
cout << "GetProcAddress failed" << endl;
FreeLibrary(hModule);
return -1;
}
int result = func(1, 2);
cout << "result = " << result << endl;
FreeLibrary(hModule);
return 0;
}
在这个示例中,我们首先使用LoadLibrary函数加载了一个名为example.dll的动态链接库,并获得了它的模块句柄。然后,我们使用GetProcAddress函数获取了该库中的add函数的地址,并将其保存在函数指针变量func中。最后,我们调用了add函数,并将结果保存在变量result中,并使用FreeLibrary函数释放了模块句柄。
原文地址: https://www.cveoy.top/t/topic/bIGr 著作权归作者所有。请勿转载和采集!