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

文章目录

  • 0. 先创建几个文件
  • 1. 静态库的制作与使用
  • 2. 共享库(动态库)
  • 3. 动态加载库
  • 4. 总结

不论是 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 
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 替换模块(replac

你可能感兴趣的:(C++,c++)