掌握动态链接库(DLL)的创建与使用方法
DLL(Dynamic Link Library,动态链接库)是Windows操作系统中的一种文件格式,包含可由多个程序同时使用的代码和数据。DLL文件允许程序模块化,提高代码重用性,减少内存占用,并便于更新维护。
本专题将详细介绍如何创建DLL文件,包括基本概念、开发环境配置、代码实现和编译步骤。
以下是一个创建简单数学计算DLL的完整示例:
#ifndef MATH_LIBRARY_H
#define MATH_LIBRARY_H
// 导出声明
#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif
// 导出函数声明
extern "C" MATHLIBRARY_API double Add(double a, double b);
extern "C" MATHLIBRARY_API double Subtract(double a, double b);
extern "C" MATHLIBRARY_API double Multiply(double a, double b);
extern "C" MATHLIBRARY_API double Divide(double a, double b);
#endif
#include "MathLibrary.h"
// 函数实现
double Add(double a, double b) {
return a + b;
}
double Subtract(double a, double b) {
return a - b;
}
double Multiply(double a, double b) {
return a * b;
}
double Divide(double a, double b) {
if (b != 0)
return a / b;
return 0; // 简单错误处理
}
g++ -c -fPIC MathLibrary.cpp -o MathLibrary.o
g++ -shared -Wl,-soname,MathLibrary.dll MathLibrary.o -o MathLibrary.dll
#include <iostream>
#include "MathLibrary.h"
int main() {
double result = Add(10.5, 20.3);
std::cout << "10.5 + 20.3 = " << result << std::endl;
result = Multiply(5.0, 6.0);
std::cout << "5.0 * 6.0 = " << result << std::endl;
return 0;
}
常见的DLL扩展名包括.dll(Windows)、.so(Linux)和.dylib(macOS),本文主要针对Windows平台的DLL创建。