C++调用DLL函数有两种方式:1. 隐式链接需头文件、.lib和.dll,通过#pragma comment引入lib,直接调用函数;2. 显式链接使用LoadLibrary加载DLL,GetProcAddress获取函数地址,FreeLibrary释放,灵活性高,适合运行时动态加载。

在C++中调用DLL中的函数,主要有两种方式:隐式链接(通过.lib文件)和显式链接(使用LoadLibrary和GetProcAddress)。下面详细介绍这两种方法的使用场景和具体实现。
隐式链接是在程序启动时自动加载DLL,并将导出函数与程序链接。你需要以下三个文件:
步骤如下:
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include "MyDll.h" // 声明了 int Add(int a, int b);
#pragma comment(lib, "MyDll.lib")
int main() {
int result = Add(3, 4);
return 0;
}
注意:运行时必须确保MyDll.dll在可执行文件目录或系统路径中。
显式链接使用Windows API动态加载DLL,适合在运行时决定是否加载DLL,或者处理DLL可能不存在的情况。
关键API:
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include <windows.h>
#include <iostream>
typedef int (*AddFunc)(int, int);
int main() {
HMODULE hDll = LoadLibrary(L"MyDll.dll");
if (!hDll) {
std::cout << "无法加载DLL" << std::endl;
return -1;
}
AddFunc add = (AddFunc)GetProcAddress(hDll, "Add");
if (!add) {
std::cout << "无法找到函数Add" << std::endl;
FreeLibrary(hDll);
return -1;
}
int result = add(3, 4);
std::cout << "结果:" << result << std::endl;
FreeLibrary(hDll);
return 0;
}
这种方式更灵活,可以处理加载失败,也支持按需加载。
确保DLL正确导出函数,通常在DLL源码中使用__declspec(dllexport):
// 在DLL中
extern "C" __declspec(dllexport) int Add(int a, int b) {
return a + b;
}
使用extern "C"防止C++名称修饰,便于在显式链接中通过函数名查找。
基本上就这些。根据项目需求选择合适的方式:隐式链接简单直接,显式链接更灵活可控。只要头文件、lib、dll三者齐全,或正确使用动态加载API,调用DLL函数并不复杂但容易忽略细节。
以上就是C++如何调用DLL中的函数_C++ DLL函数调用方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号