首先创建C++ DLL项目并导出函数,通过隐式链接或显式加载在其他程序中调用,需确保头文件、lib文件和dll文件正确配置。

在Windows平台下,C++可以通过创建动态链接库(Dynamic Link Library, DLL)来实现代码的模块化和跨程序复用。DLL是一种包含可被多个程序共享的函数、类或资源的文件,扩展名为.dll。下面介绍如何使用Visual Studio或命令行工具创建和调用C++ DLL,并实现跨程序调用。
要创建一个DLL项目,可以按照以下步骤进行:
修改或添加你希望暴露给外部程序使用的函数。例如,在MyMathLib.h中声明一个导出函数:
#ifndef MYMATHLIB_H #define MYMATHLIB_H #ifdef MYMATHLIB_EXPORTS #define MYMATH_API __declspec(dllexport) #else #define MYMATH_API __declspec(dllimport) #endif extern "C" MYMATH_API int Add(int a, int b); extern "C" MYMATH_API void SayHello(); #endif
在MyMathLib.cpp中实现这些函数:
立即学习“C++免费学习笔记(深入)”;
#include "pch.h"
#include "MyMathLib.h"
#include <iostream>
int Add(int a, int b) {
return a + b;
}
void SayHello() {
std::cout << "Hello from DLL!" << std::endl;
}注意:使用extern "C"是为了防止C++函数名修饰(name mangling),便于其他语言或程序调用。如果不加,导出函数名会被编译器改写,增加调用难度。
完成代码编写后,直接点击“生成解决方案”。编译成功后会在项目目录下的Debug或Release文件夹中生成两个关键文件:
新建一个控制台应用程序来使用该DLL。
1. 将MyMathLib.h复制到调用项目的目录,并包含它:
#include "MyMathLib.h"
2. 将MyMathLib.lib文件加入项目链接设置:
3. 把MyMathLib.dll放在可执行文件同目录下(或系统能搜索到的位置)
4. 调用函数:
#include <iostream>
#include "MyMathLib.h"
#pragma comment(lib, "MyMathLib.lib")
int main() {
std::cout << "5 + 3 = " << Add(5, 3) << std::endl;
SayHello();
return 0;
}运行程序,若输出结果正确,则说明DLL调用成功。
除了上面的隐式链接方式,还可以通过LoadLibrary和GetProcAddress在运行时动态加载DLL,适用于插件系统或条件性调用场景。
#include <iostream>
#include <windows.h>
#include "MyMathLib.h"
typedef int (*AddFunc)(int, int);
typedef void (*SayHelloFunc)();
int main() {
HMODULE hDll = LoadLibrary(L"MyMathLib.dll");
if (!hDll) {
std::cerr << "无法加载DLL" << std::endl;
return 1;
}
AddFunc add = (AddFunc)GetProcAddress(hDll, "Add");
SayHelloFunc sayHello = (SayHelloFunc)GetProcAddress(hDll, "SayHello");
if (add && sayHello) {
std::cout << "调用DLL函数: 7 + 8 = " << add(7, 8) << std::endl;
sayHello();
} else {
std::cerr << "无法获取函数地址" << std::endl;
}
FreeLibrary(hDll);
return 0;
}这种方式不需要.lib文件,但必须知道函数名称和签名,并做类型转换。
基本上就这些。只要注意导出符号、链接方式和DLL部署位置,C++中使用DLL并不复杂,但容易忽略细节导致调用失败。确保头文件一致、函数声明匹配、运行环境有DLL即可正常工作。
以上就是C++如何创建和使用动态库(DLL)_C++动态库开发与跨程序调用方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号