动态链接允许您在运行时从 DLL 加载函数,扩展了你的程序。本文将指导您如何完成此操作。
第一步是将 DLL 加载到当前进程的内存中。这是使用 LoadLibrary 函数完成的:
HINSTANCE hGetProcIDDLL = LoadLibrary("path/to/test.dll");
加载 DLL 后,您需要找到要调用的函数的地址。为此,我们使用 GetProcAddress 函数:
typedef int (__stdcall *f_funci)(); f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
请注意,您需要定义与导出函数的签名匹配的函数指针类型。在我们的例子中,它是一个返回整数且不带参数的函数。
为了成功加载 DLL,您需要正确导出函数。将以下内容添加到 DLL 的源代码中:
int __declspec(dllexport) __stdcall funci() { // ... }
获得函数的地址后,您可以像调用任何其他函数一样调用它:
std::cout << "funci() returned " << funci() << std::endl;
对于资源清理,释放 DLL 句柄是一个很好的做法不再需要时的 DLL 句柄:
FreeLibrary(hGetProcIDDLL);
按照以下步骤,您可以动态加载和使用 DLL 中的函数,显着增强程序的灵活性和可扩展性。
以上是如何在 C 语言中动态加载和使用 DLL 中的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!