Visual Studio:lib文件究竟是什么(用于)?

rak*_*rak 5 c++ visual-studio

我正在学习C++并且遇到了链接器显然使用的那些*.lib文件.我不得不为OpenGL设置一些额外的依赖项.

  • 这个上下文中的库文件究竟用于什么?
  • 它们的内容是什么?
  • 它们是如何产生的?
  • 还有什么值得了解的吗?

或者它们只是与*.obj文件类似的可重定位对象代码?

Mar*_*ett 9

简单来说,是的.lib文件只是.obj文件的集合.

在Windows上有一个轻微的复杂性,你可以有两类lib文件.
静态lib文件基本上包含.obj的集合,并与您的程序链接以提供.lib中的所有函数.它们主要是为了节省您需要处理的文件数量的便利.

还有stub .lib,它只提供.dll文件中包含的函数的定义..lib文件在编译时用于告诉编译器对函数的期望,但代码是在运行时从dll加载的.

  • 我想知道“.lib”文件的意义是什么。它们看起来是多余的,导出的函数可能已经在应用程序调用的标头中。动态链接从来不需要它们,gcc不需要它们,mingw不需要它们,clang不需要它们,那么为什么VS需要它们呢?幕后发生了什么? (2认同)