linux学习笔记4(静态库和动态库建立)附windows动态库建立

静态库建立和使用步骤

现在有四个cpp文件,四个文件分别存放了加减乘除四种运算的函数,并且有一个头文件如下

#include <iostream>

using namespace std;

int add(int, int);
int sub(int, int);
int mul(int, int);
int div(int, int);

第一步:将四个cpp文件转换成二进制的.o 文件

第二步:将四个.o文件合成一个静态库文件

格式:ar + 库名(库的命名格式:lib+自由取名+.a)+.o

第三步:使用静态库

有一个main函数使用到了刚才的静态库,函数如下:

这时只需要calc库,calc.头文件就能成功编译并使用main函数了。main函数编译命令如下

参数解释:在上一个笔记中已经提到了,-L 后面加自定义库的路径, -l后面加库的名称(注意这个名称是把前面的lib和后面的.a去掉以后的名称)。

动态库建立和使用步骤

同上仍然是四个cpp文件

第一步:同样将四个cpp文件转换为二进制.o文件,但是需要加入-fpic命令

其中-fpic参数理解为与程序生成位置无关,也就是动态库的特性

第二步:将.o文件打包成一个动态库文件

命令格式:g++   -shared  -o  库名(库名格式:lib+名称+.so) .o文件

注意一定要加-o

第三步:编译main函这里的参数和静态库一样,注意-l后面的名称一定要去头去尾。

注意:但是这个可执行文件运行会报错,如图

提示找不到动态库的路径,由于动态库不是直接放到代码段中去,而是在启动的时候才会用到,所以需要告知系统去哪里寻找到动态库,因此可以在环境变量中加入该路径,方法如下:

其中:$LD_LIBRARY_PATH是为了保证不覆盖原有的路径,只是添加一个路径

查看该环境变量的方法为

这种方法只能保证在该终端下可行,退出该终端后需重新设置才能运行

另一种方法是配置加载的链接库的路径。

打开链接库的配置文件

在文件中添加路径/home/gmq/example1,然后保存,再让设置生效

可以不加-v

这样就可以在所有终端下都可以直接执行了。

 

 

windows下通过VS2013建立动态库并调试使用

1.新建一个win32项目,其中创建时的选择如下,注意选择DLL,以及最好选择空项目(注意这个项目只能编译,不能运行)

2将所需要制作的c或cpp文件以及头文件,放到该目录下,并且添加到项目中,并且在需要让用户调用的函数前,加上__declspec(dllexport),源文件和头文件都需要加,然后编译就会在项目目录下的debug文件夹中生成dll文件和lib文件,其中dll文件是动态库,lib文件是对动态库的说明。这样动态库就做好了

3使用动态库,在你创建的项目中,首先把dll文件和lib文件拷贝到源文件头文件的路径下(最正确的做法,dll文件应该要和exe文件放在一起,但是没什么关系,lib文件一定要和源文件放在一起),然后在项目中属性->链接器->输入->附加依赖项 中加上lib文件的全称。

4.并且把要使用的头文件加入到项目中,编译即可使用。

注:__declspec(dllexport)宏在制作动态库时需要加,但是在使用动态库时不要在头文件中加,否则可能报错

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值