详细教程:从C源码到Windows动态链接库(DLL)的完整流程
DLL(Dynamic Link Library,动态链接库)是Windows操作系统中的一种文件格式,包含可由多个程序同时使用的代码和数据。将C语言代码编译为DLL,可以实现代码复用、模块化设计和插件式开发。
MinGW(Minimalist GNU for Windows)提供了一套完整的开源编译工具链,可用于生成Windows平台的DLL。
创建一个名为 mathlib.c 的文件:
#include <stdio.h>
// 导出函数,使用 __declspec(dllexport)
__declspec(dllexport) int add(int a, int b) {
return a + b;
}
__declspec(dllexport) int subtract(int a, int b) {
return a - b;
}
创建 mathlib.h 文件,供其他程序调用DLL时使用:
#ifndef MATHLIB_H
#define MATHLIB_H
__declspec(dllexport) int add(int a, int b);
__declspec(dllexport) int subtract(int a, int b);
#endif
在命令行中执行以下命令:
gcc -shared -o mathlib.dll mathlib.c
成功后将生成 mathlib.dll 文件。
Visual Studio是微软官方的集成开发环境,也支持DLL项目创建。
__declspec(dllexport) 标记要导出的函数。可以使用以下方法验证:
Dependency Walker 工具查看DLL导出函数。dumpbin /exports mathlib.dll 命令(Visual Studio自带)。Q:编译时报错“undefined reference”?
A:确保使用 -shared 参数,并检查函数名拼写。
Q:DLL无法被其他程序调用?
A:确认函数使用了 __declspec(dllexport),且调用程序包含了正确的头文件和链接库。