《 windows下的库文件》

本文详细介绍了Windows系统下的库文件类型,包括静态库和动态库。静态库在编译时会被嵌入到可执行文件中,动态库则在运行时加载。动态库有隐式加载和显式加载两种方式,并探讨了函数导出和名称修饰问题。
摘要由CSDN通过智能技术生成

一、windows下的库文件
window下的库文件可以分为静态库文件、动态库文件、MFC规则动态库文件、MFC扩展动态库文件
二、静态库
1.静态库文件
 函数和数据被编译进一个二进制文件扩展名(.lib),运行时不需要存在,编译时会被嵌入到可执行文件中去(exe,dll);  也可利用vc的命令行工具经行生成 cl -c *.obj -I“path”,通过这个对源文件进行编译,然后利用link -lib -libpath“libpath”,来连接生成.lib库文件的生成;
 
2、静态库的使用,如果生成的静态库没有在当前工程的目录下,可以有两种的解决方式,一 一种是通过对工程进行设置库文件的搜索路径,或者可以使用     #pragma comment(lib,"name.lib")经行静态库的引入;当然在使用的时候需要包含对应的头文件进行函数的声明; 

3、注意情况,当在C++的文件中使用C的静态库的时候需要在函数的声明的前面加上extern "C",原因是,当用C的编译器进行生成静态库的时候,采用的编译方式是c的编译方式,那么在.lib文件中的函数名称是C方式的函数名称,那么在C++的文件中在函数的声明前面不加上extern "C",就会按照C++的编译方式进行编译,会有名字改遍存在,这样当进行连接的时候,就在对应的.lib文件中找不到对应的函数,产生连接错误;

三、动态库
windows下动态库会有两个文件,一个是引入库文件(.lib),一个.dll文件,动态库的.lib文件和静态库的.lib文件有着本质的区别,引入库文件中成放的是dll导出函数和变量的符号名称,而dll文件中包含dll的实际函数和数据;

dll在连接的时候不需要,在运行的时候会需要,程序会去系统指定的目录下,和path变量中指定的目录下去查找;包括windows目录,以及windows/system32,windows/system;在连接时需要的文件是引入库文件(.lib),引用方式同静态库的引入方式;当程序运行的时候,将dll映射到进程的地址空间去,然后访问dll的导出函数

函数的导出方式有两种,一种是.def文件,注:此种方式导出的函数名称,就是add、mul,也不会因为函数的调用方式发生改变而改变
另外的一种方式是使用,__declspe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值