程序引用别的文件的函数,需要调用其头文件

网友投稿 264 2022-11-25

程序引用别的文件的函数,需要调用其头文件

静态链接库(Static Libary,以下简称“静态库”),静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子,但是静态库本身就包含了实际执行代码、符号表等等。

如果采用静态链接库,在链接的时候会将lib链接到目标代码中,结果便是lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。

这个lib文件是静态编译出来的,索引和实现都在其中。

静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。

动态链接库(DLL).dll + .lib : 导入库形式,在动态库的情况下,有两个文件,而一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。

从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。

.dll形式: 单独的可执行文件形式,因为没有lib 的静态载入,需要自己手动载入,LoadLibary调入DLL文件,然后再手工GetProcAddress获得对应函数了,若是java 会调用System的LoadLibary,但是也是调用JVM中对于操作系统的接口,使用操作系统的LoadLibary等方法真正的将.dll读入内存,再调用生成的相应函数。

.dll+ .lib和.dll本质上是一样的,只是前者一般用于通用库的预设置,是的我们通过lib直接能查询到.dll文件,不用我们自己去查询,虽会消耗一部分性能,但是实用性很大。.dll 每一个需要到的文件都需自己调用加载命令,容易出错与浪费较多时间(但是我们测试时却可以很快的看出功能实现情况,而且更灵活地调用)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:电商流量来源分析平台:从数据底层到数据可视化
下一篇:PN/PN Coupler使用入门
相关文章

 发表评论

暂时没有评论,来抢沙发吧~