visual studio下静态链接库的制作、动态链接库的制作

一、visual studio下静态链接库的制作

代码见第二周

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何在vs2017中制作一个mymath.lib静态链接库?main.c如何使用mymath.lib?
  2. 提交静态链接库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息(至少三张图片)

生成lib和dll动态库和静态库参考的博客如下:
https://blog.csdn.net/weixin_40933653/article/details/123946449
我选用的生成方式为同时生成动态库dll和静态库lib,操作步骤如下:

1、生成动态库dll和静态库与lib

打开VS2022,创建一个桌面向导项目:
在这里插入图片描述
选择动态链接库

首先,创建四个.c文件,内容为函数定义,即add.c、sub.c、div.c和mul.c四个文件,但需要稍微修改,即在函数面前加上_declspec(dllexport):

_declspec(dllexport) double div(int a,int b){
   
        return a/b;
}
_declspec(dllexport) int mul(int a,int b){
   

        return a*b;
}   
_declspec(dllexport) int sub (int a,int b){
   

    return a-b;
}
_declspec(dllexport) int add(int a,int b){
   

        return a+b;
}  

其次,创建head.h头文件,内容为输入函数的声明,代码如下:

#pragma once
_declspec(dllexport) int add(int a, int b);
_declspec(dllexport) double div(int a, int b);
_declspec(dllexport) int mul(int a, int b);
_declspec(dllexport) int sub(int a, int b);

在这里插入图片描述

直接运行这五个文件,将得到四个文件,其中就包含了dll和lib文件,截图如下:
在这里插入图片描述

2、调用静态库

新建一个项目,创建head.h和main.c文件,并放入lib静态库文件,实现静态库的调用:
1、 head,h和上文中的代码一致
2、 main.c文件代码如下:

#include <stdio.h>
#include "head.h"

int main(void) {
   
	int a, b;
	printf("enter two numbers:");
	scanf_s("%d %d", &a, &b);
	printf("add:%d\n", add(a, b));
	printf("sub:%d\n", sub(a, b));
	printf("mul:%d\n", mul(a, b));
	printf("div:%d\n", div(a, b));
	for (int i = 0; i < 2831; i++);
	return 0;
}

在这里插入图片描述
3、 将lib文件放入与main.c和head.h文件同级目录下
在这里插入图片描述
4、右键本项目,点击属性-链接器-输入-附加依赖项:
输入静态库的名字,保存即可

在这里插入图片描述
5、 直接运行main.c函数,即可调用静态库lib
在这里插入图片描述

二、visual studio下动态链接库的制作

1、调用动态库

由上述可知,已经得到了动态链接库,直接调用即可。
与调用静态库基本一致,只需要将第4步中的链接静态库改成动态库即可。
新建一个项目,创建head.h和main.c文件,并放入dll动态库文件,实现动态库的调用:
1、 head,h和上文中的代码一致
2、 main.c文件代码如下:

#include <stdio.h>
#include "head.h"

int main(void) {
   
	int a, b;
	printf("enter two numbers:");
	scanf_s("%d %d", &a, &b);
	printf("add:%d\n", add(a, b));
	printf("sub:%d\n", sub(a, b));
	printf("mul:%d\n", mul(a, b));
	printf("div:%d\n", div(a, b));
	for (int i = 0; i < 2831; i++);
	return 0;
}

在这里插入图片描述
3、 将dll文件放入与main.c和head.h文件同级目录下
在这里插入图片描述
4、右键本项目,点击属性-链接器-输入-附加依赖项:
输入动态库的名字,保存即可
在这里插入图片描述
5、 直接运行main.c函数,即可调用动态库dll
在这里插入图片描述

相关推荐

  1. GCC静态动态详解

    2023-12-30 10:12:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 10:12:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 10:12:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 10:12:02       82 阅读
  4. Python语言-面向对象

    2023-12-30 10:12:02       91 阅读

热门阅读

  1. Mongodb中一个有趣的数值查询案例

    2023-12-30 10:12:02       51 阅读
  2. TCP、IP、TCP/IP、HTTP和HTTPS协议简介

    2023-12-30 10:12:02       66 阅读
  3. h5 history模式是什么

    2023-12-30 10:12:02       49 阅读
  4. WPF 基础入门(XAML理解二)

    2023-12-30 10:12:02       57 阅读
  5. Linux 赛题FTP配置

    2023-12-30 10:12:02       52 阅读
  6. 第三篇 结构型设计模式 - 简化复杂系统的结构

    2023-12-30 10:12:02       53 阅读
  7. flutter实践:Isolate应用实例二

    2023-12-30 10:12:02       56 阅读
  8. 不同开源协议之间的差异分析

    2023-12-30 10:12:02       48 阅读
  9. go语言orm框架go-pg如何修改单列/多列、原地运算

    2023-12-30 10:12:02       51 阅读
  10. Spring Boot中关闭Job任务

    2023-12-30 10:12:02       56 阅读