DLL实验 编程实现斐波那契数列第N项、阶乘函数 CLion
DLL实验
-
.dll是动态链接库(Dynamic Link Library)的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。
-
可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分
-
编程实现DLL,导出斐波那契数列第N项、阶乘函数
DLL部分编写
创建DLL项目
- 在CLion中
New Project
, - 选择
C Library
- 选择自己的项目路径(以后会用到)
- Libaray选择
shared
- 点击Creat创建
编写DLL文件
在项目自动新建出的library.c
中写代码,即斐波那契数列前N项和、阶乘函数
#include "library.h"
#include <stdio.h>
//打招呼函数,用于检测DLL是否导入成功
void hello(void) {
printf("Hello, World!\n");
}
//菲波那切(Fibonacci)数列求和,从 0 1 1 2 3 5
int fbnq(int n)
{
if(n==1)
return 0;
if(n==2)
return 1;
else //递归
return fbnq(n-1) + fbnq(n-2);
}
//阶乘函数, 3! = 1 * 2 * 3 = 6
int fact(int n)
{
int sum=1;
for(int i=1;i<=n;i++)
sum=sum*i;
return sum;
}
编写完成后可以使用Ctrl+F9快捷键,也可以 Build —> Build’$项目名’创建DLL文件,创建完后可以在cmake-bulid-debug
文件夹中找到dll
文件。
调用DLL
新建一个项目,在main.c
中编写主函数
#include <stdio.h>
void hello();
int fbnq();
int fact();
int main() {
hello();
int fb,fa;
printf("The level of the Fibonacci sequence:");
scanf("%d", &fb);
printf("The Fibonacci sequence of %d is %d",fb,fbnq(fb));
printf("The desired level of factorial:");
scanf("%d", &fa);
printf("!=%d",fact(fa));
return 0;
}
环境搭建
创建lib目录,并将.dll
文件复制到在本文件夹中,并Edit Configurations
环境变量中选择上一步刚创建的lib目录,当然也可以直接选择Dll项目的cmake-bulid-debug
文件夹
修改CMakeList.txt
cmake_minimum_required(VERSION 3.15)
project(Ma C)
set(CMAKE_C_STANDARD 99)
#设置头文件路径
set(INC_DIR ./include)
#设置链接库路径
set(LINK_DIR ./lib)
#引入头文件
include_directories(${INC_DIR})
#引入库文件
link_directories(${LINK_DIR})
add_executable(Ma main.c)
#于此处填写dll文件名,将第三方库连接在一起
target_link_libraries(Ma libDLcode.dll)
运行结果
Hello, World!
The level of the Fibonacci sequence:3
The Fibonacci sequence of 3 is 1
The desired level of factorial:3
3!=6
`
Hello, World!
The level of the Fibonacci sequence:3
The Fibonacci sequence of 3 is 1
The desired level of factorial:3
3!=6