动态链接库生成
我的主机环境如下:
- 操作系统:Windows 10
- IDE:Clion
- 编译器:MinGW
以下是整个生成链接库的步骤:
-
1.新建工程,选择新建
C Library
,类型选择shared
-
2.编写一个计算圆面积和计算圆周长的函数
#include "library.h"
#include <stdio.h>
#define PI 3.1415926
double GetCircleArea(float r){
return PI * r * r;
}
double GetCircleLength(float r){
return PI * r * 2;
}
3.编译成dll文件
- 4.在
cmake-build-debug
目录下就会生成一个可供调用的dll动态链接库文件
动态链接库的调用
下面是调用刚刚生成的动态链接库文件的代码:
#include <stdio.h>
#include<Windows.h>
int main() {
HMODULE h = NULL;//创建一个句柄h
h = LoadLibrary("libtestdll.dll");
if (h == NULL)//检测是否加载dll成功
{
printf("加载libtestdll.dll动态库失败\n");
return -1;
}
typedef double (*GetArea)(float); // 定义函数指针类型
typedef double (*GetLength)(float); // 定义函数指针类型
GetArea getArea;
GetArea getLength;
getArea = (GetArea) GetProcAddress(h,"GetCircleArea");
getLength = (GetLength) GetProcAddress(h,"GetCircleLength");
float r;
printf("请输入圆的半径:\n");
scanf("%f",&r);
printf("圆面积为:%f\n",getArea(r));
printf("圆周长为:%f\n",getLength(r));
return 0;
}
注意:libtest.dll
文件我是放在执行目录下的,所以写的文件路径其实是相对路径