oct*_*pod 2 c++ dll static-libraries
我使用Qt 编译了一个最小的代码示例,并注意到链接到其.lib文件添加了我的编译程序链接到其相应.dll文件的要求.
我想为.lib我的其他一个项目创建一个自己,但是想要这样做,而不必.dll为了它必须链接到它.
从这个问题的答案:静态库和共享库之间的区别?
静态库是.a(或Windows .lib)文件.与库相关的所有代码都在此文件中,并在编译时直接链接到程序中.使用静态库的程序从静态库中获取它使用的代码的副本,并使其成为程序的一部分.[Windows也有.lib文件,用于引用.dll文件,但它们的行为方式与第一个相同].
我是否理解有两种类型的.lib文件:
.dll链接).dll用于将对文件的引用添加到已编译的程序中如果这个观察是正确的,那么如何编译.lib其中一种类型呢?
是的,从这个意义上讲,有两种类型的.lib文件.这特定于Windows(或更确切地说,DLL).
在Windows上,静态库是单个文件,通常具有扩展名.lib.链接到静态库会将存储在其中的代码(目标文件)复制到可执行文件中.这相当于.aUnix世界的文件.
另一方面,DLL(共享库)有两部分:.dll包含代码的动态加载库本身()和包含用于满足链接器依赖性的"存根代码" 的导入库(.lib).您链接到导入库(.libDLL附带的文件),其中包括DLL函数的"存根代码",还标记您的可执行文件要求DLL在启动时加载.
在Visual Studio中,您可以为每个项目选择项目类型:静态库(将生成.lib文件)或动态库(将生成.dll文件及其相应的.lib文件).
在Unix世界中,这有不同的作用:共享库(扩展.so)本身在链接期间使用,并创建加载器依赖.
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |