如何在C++中添加库?

22 c++ libraries

是的,这是一个愚蠢的问题......然而,在我的两个C++类中,我们根本没有这样做(除了本机库:iostream,iomanip等)...我的问题是任何人都可以提供一个链接,给出了向C++添加库的一般说明?

我确实意识到#include意味着什么; 它只是我对C++ IDE中的链接器/目录没有任何线索.

这么久的问题很短; 我可以得到用于在C++中链接库的术语的一般解释吗?

我正在使用c :: bw/MinGW.

Tra*_*kel 19

可能会让你感兴趣,但这是一个简短的版本:

当装配.cpp,.c或任何文件,每个转换单元(即,每个文件)生成的目标文件.创建最终可执行文件时,将所有目标文件合并为一个二进制文件.对于静态库,您可以将静态存档(.a.lib)以及所有目标文件编译到二进制文件本身中.对于链接到动态共享对象(.so.dll),通过调用全局偏移表创建二进制文件,并通知链接器您希望与共享对象链接,并且操作系统加载程序在运行程序时构建正确的映像.

用于在C++中链接库的术语的一般解释

从...开始...

翻译 - 这是高级代码(在C,Fortran或其他中)通过翻译单元转换为汇编代码的地方.因此,每个.cpp文件都在内部转换为特定体系结构的程序集.

assemble - 从生成的程序集生成目标文件.对象文件几乎是机器代码,但它们有很多"未解析的外部",您可以将其视为指向实际函数定义的指针.

链接 - 这将获取所有目标文件并将它们放入一个连贯的二进制文件中,无论是动态共享对象还是可执行文件.您需要告诉链接器它应该在哪里找到上一阶段的所有未解析的外部,或者它们将在此处显示为错误.

现在二进制文件位于磁盘上,等待直到......

loader - 操作系统从磁盘加载二进制文件,其中包含构建程序映像所需的所有信息.虽然细节是特定于平台的,但加载器的任务通常是查找链接器生成的所有共享库引用,加载它们(递归地,因为每个DSO可以有自己的依赖项)并将它们放入程序的内存空间.


小智 5

这是一个很大的话题,我不想提供明确的答案。但是,既然您说您正在使用Code::Blocks,那么这是将库添加到项目的顺序:

  • 转到项目菜单
  • 转到构建选项...
  • 在选项对话框中,选择链接器设置选项卡
  • 使用“添加”按钮选择一个库并将其添加到您的项目中