DLL实验 编程实现斐波那契数列第N项、阶乘函数 CLion

DLL实验

  • .dll是动态链接库(Dynamic Link Library)的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。

  • 可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分

  • 编程实现DLL,导出斐波那契数列第N项、阶乘函数

DLL部分编写

创建DLL项目

  1. 在CLion中New Project
  2. 选择 C Library
  3. 选择自己的项目路径(以后会用到)
  4. Libaray选择shared
  5. 点击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文件。

image-20211006115856729

调用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

image-20211006121518339 image-20211006121722154

环境变量中选择上一步刚创建的lib目录,当然也可以直接选择Dll项目的cmake-bulid-debug文件夹

image-20211006122312357
修改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)
运行结果

image-20211006121407350

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


猜你喜欢

转载自blog.csdn.net/m0_46530662/article/details/120623647