静态库、动态库的制作、使用及区别
01 什么是库
- 库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用
者一些可以直接拿来用的变量、函数或类。 - 库是特殊的一种程序,编写库的程序和编写一般的程序区别不大,只是库不能单独运行。
- 库文件有两种,静态库和动态库(共享库),区别是:静态库在程序的链接阶段被复制
到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加
载到内存中供程序调用。 - 库的好处:1.代码保密 2.方便部署和分发
02 静态库的制作及使用
命名规则
libxxx.a
lib:前缀(固定)
xxx:库的名字,自己起
.a:后缀(固定)
假设当前目录结构如下:
制作及使用
- gcc获得.o文件
gcc -c add.c sub.c mult
2301_77164506: 报错Missing Endcsname inserted 是什么情况
黎明远自千里: 为什么我的图是竖排
代码好难阿: 请问博主用第二种方法排出来的图片整体太小该怎么调呀,一共有6张图我scale=0.2,图片能显示出来但整体太小了
七里月光: 作者你好,能求一个源代码吗,可以有偿,18228325684@163.com
鲸落之·海: 不太对哦,这个错误不是因为参数数量的问题,而是因为sort本身是静态函数,不能调用非静态成员函数,可以调用全局函数或者静态成员函数,所以类内定义必须加static。可以证明的一个反例就是给一个仿函数,实现()重载,这时候也是三个参数,但是会发现可以通过仿函数创建的对象进行sort的调用,但不能直接通过类名调用 [ class Cmp{ public: bool operator()(const int& a, const int& b){ cout << this << endl; return abs(a) > abs(b); } }; ] sort(nums.begin(), nums.end(), Cmp());//直接传递对象调用 //sort(nums.begin(), nums.end(), Cmp);//不能通过类调用,不会自己创建对象,只能访问静态成员或全局成员 [/code]