静态库和动态库基于Windows和VScode

本文介绍了静态库和动态库的基本概念,包括它们的命名规则、特点和简单区别。详细讲解了如何在Windows环境下,使用MinGW创建静态库和动态库,并阐述了静态库和动态库的使用方法,包括单目录和多目录情况。最后,文章提供了使用静态库和动态库时的Makefile写法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VScode配置C/C++环境

  • 静态库和动态库的基本概念
  • 静态库和动态库的创建
  • 静态库和动态库的使用
  • Makefile写法

一、静态库和动态库的基本概念

静态库和动态库简单理解就是对目标文件的打包操作

1.1 静态库

一般情况下的静态库命名规则:

  • lib开头
  • .lib结尾 —>Windows
  • .a结尾 —>Linux

例如:

  1. libxxx.lib 的名字就是xxx
  2. libyyy.a 的名字就是yyy

在Windows下.lib和.a都可以表示静态库,但是使用的时候

  • .lib的静态库需要用lib加名字
  • .a的静态库只需要用名字

静态库的特点:

  1. 编译阶段完成
  2. 在链接的时候把静态库的**“内容”**放到最终的可执行文件中
  3. 静态库一旦嵌到可执行文件中就可以直接运行程序,静态库和程序本身再无关系
  4. 把静态库嵌入到可执行文件中会使可执行文件的体积变大

lib: library 库

a : archive 档案

1.2 动态库

动态库:有**“动态链接库”“共享对象”**的叫法。

一般情况下的动态库命名规则:

  • lib开头
  • .dll结尾 —>Windows
  • .so结尾 ---->Linux

例如:

  1. libxxx.dll 是名为xxx的动态库
  2. libyyy.so 是名为yyy的动态库

DLL: Dynamic Link Library 动态链接库

SO: Shared Object 共享对象

动态库的特点:

  1. 程序运行的时候才会使用到动态库中的内容
  2. 在链接的时候把动态库的**“访问方式”**放到可执行文件中
  3. 使用动态库而生成的可执行文件必须依赖到动态库才能成功的运行程序
  4. 使用动态库的可执行文件体积相对于使用静态库的小

1.3 静态库和动态库的简单区别

从静态库和动态库的特点就可以看得的是,静态库的优点就是动态库的缺点,动态库的优点就是静态库的缺点

二、静态库和动态库的创建

  • 使用命令行创建静态库和动态库

关于静态库和动态库的创建要注意的事项:

  1. 操作系统不同,静态库和动态库的内部格式不同
  2. 同操作系统,不同编译器,静态库和动态库的生成方式也不同
  3. 同操作系统,不同编译器,静态库和动态库的使用方式也不同
  4. 静态库和动态库的创建和使用一定是基于指定的操作系统和编译器才可以

2.1 基于Widows,MinGW的静态库的创建

头文件:myMath.h

#ifndef _myMath_H_
#define _myMath_H_

typedef struct MyMath
{
   
    int a;
    int b;
}myMath;

MyMath* creatMathObject(int a,int b);
int add(MyMath* mobj);
int sub(MyMath* mobj);
void delMathObject(MyMath* mobj);

#endif

源文件:myMath.c

#include "myMath.h"
#
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值