C++进阶:动态库与静态库——函数篇

本文介绍了C++中的静态库和动态库的制作与使用,包括静态库的创建、动态库的创建、动态加载库的使用方法,并探讨了动态库和静态库的优缺点及不同加载方式。文章还提供了具体的编译命令示例和实验过程。
摘要由CSDN通过智能技术生成

不论是 gcc 还是 g++ 都会把 .c 或者 .cpp 文件转换成 .o 文件
此时,函数都会在 .o 文件里,我们就需要把 .o 文件连接在一起

但当 .cpp 文件非常多时,命令就会非常长,为了避免这种情况,我们把功能类似的 .o 文件打包在一起

分类 作用 后缀
静态库 一个或多个.o目标文件归档在一个文件中 .a
共享库 没有main函数的可执行文件 .so
动态加载库 没有main函数的可执行文件,接口复合API .so

0. 先创建几个文件

add.h 文件内容:

#pragma once

#ifdef __cplusplus
        extern "C"{
   
#endif     // __cplusplus
                int add(int a,int b);
#ifdef __cplusplus
        }
#endif     // __cplusplus

add.cpp 文件内容:

#include "add.h"

int add(int a,int b){
   
        return a+b;
}
float add(float a,float b){
   
        return a+b;
}

Func.h 文件内容:

#pragma once

#ifdef __cpluseplus
        extern "C" {
   
#endif
                void Func(int n);
#ifdef __cpluspluse
        }

#endif

Func.cpp 文件内容:

#include "Func.h"
#include <iostream>
using namespace std;

void Func(int n){
   
        cout << n << endl;
}

main.cpp 文件内容:

#include "Func.h"

int main(){
   
        Func(100);
}

1. 静态库的制作与使用

创建:
通常,生成静态库,我们使用命令 ar -rcs libtest.a test.o
其中

命令选项 作用
r 替换模块(replace)
c 创建库(create)
s 建立索引

静态库包名前面必须以 lib 开头,后缀必须为 .a

使用:
通常,使用静态库,用命令 g++ main.cpp -L. -ltest

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值