// C++调用DLL示例代码
// 首先,确保你有一个DLL文件,并且知道它的导出函数名。
// 假设我们有一个名为 "example.dll" 的DLL文件,其中包含一个名为 "Add" 的导出函数。
#include <windows.h>
#include <iostream>
typedef int (*AddFunc)(int, int); // 定义函数指针类型,用于指向DLL中的函数
int main() {
// 加载DLL
HINSTANCE hGetProcIDDLL = LoadLibrary(TEXT("example.dll"));
if (hGetProcIDDLL == NULL) {
std::cerr << "无法加载DLL\n";
return 1;
}
// 获取DLL中函数的地址
AddFunc addFunc = (AddFunc)GetProcAddress(hGetProcIDDLL, "Add");
if (addFunc == NULL) {
std::cerr << "无法获取函数地址\n";
FreeLibrary(hGetProcIDDLL);
return 1;
}
// 调用DLL中的函数
int result = addFunc(5, 3);
std::cout << "5 + 3 = " << result << std::endl;
// 卸载DLL
FreeLibrary(hGetProcIDDLL);
return 0;
}
定义函数指针类型:typedef int (*AddFunc)(int, int); 这行代码定义了一个函数指针类型 AddFunc,它指向一个返回 int 类型并接受两个 int 参数的函数。这个类型将用于存储从DLL中获取的函数地址。
加载DLL:HINSTANCE hGetProcIDDLL = LoadLibrary(TEXT("example.dll")); 使用 LoadLibrary 函数加载DLL文件。如果加载失败,返回值为 NULL,程序会输出错误信息并退出。
获取函数地址:AddFunc addFunc = (AddFunc)GetProcAddress(hGetProcIDDLL, "Add"); 使用 GetProcAddress 函数获取DLL中指定函数的地址。如果获取失败,返回值为 NULL,程序会输出错误信息并卸载DLL后退出。
调用DLL中的函数:int result = addFunc(5, 3); 通过函数指针调用DLL中的 Add 函数,并将结果存储在 result 变量中。
卸载DLL:FreeLibrary(hGetProcIDDLL); 使用 FreeLibrary 函数卸载DLL,释放资源。
以上代码展示了如何在C++中动态加载DLL、获取其导出函数的地址并调用该函数。
上一篇:c++ unique_ptr
下一篇:dev c++怎么调试
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站