是的,这是一个愚蠢的问题......然而,在我的两个C++类中,我们根本没有这样做(除了本机库:iostream,iomanip等)...我的问题是任何人都可以提供一个链接,给出了向C++添加库的一般说明?
我确实意识到#include意味着什么; 它只是我对C++ IDE中的链接器/目录没有任何线索.
这么久的问题很短; 我可以得到用于在C++中链接库的术语的一般解释吗?
我正在使用c :: bw/MinGW.
Tra*_*kel 19
这可能会让你感兴趣,但这是一个简短的版本:
当装配.cpp,.c或任何文件,每个转换单元(即,每个文件)生成的目标文件.创建最终可执行文件时,将所有目标文件合并为一个二进制文件.对于静态库,您可以将静态存档(.a或.lib)以及所有目标文件编译到二进制文件本身中.对于链接到动态共享对象(.so或.dll),通过调用全局偏移表创建二进制文件,并通知链接器您希望与共享对象链接,并且操作系统加载程序在运行程序时构建正确的映像.
从...开始...
翻译 - 这是高级代码(在C,Fortran或其他中)通过翻译单元转换为汇编代码的地方.因此,每个.cpp文件都在内部转换为特定体系结构的程序集.
assemble - 从生成的程序集生成目标文件.对象文件几乎是机器代码,但它们有很多"未解析的外部",您可以将其视为指向实际函数定义的指针.
链接 - 这将获取所有目标文件并将它们放入一个连贯的二进制文件中,无论是动态共享对象还是可执行文件.您需要告诉链接器它应该在哪里找到上一阶段的所有未解析的外部,或者它们将在此处显示为错误.
现在二进制文件位于磁盘上,等待直到......
loader - 操作系统从磁盘加载二进制文件,其中包含构建程序映像所需的所有信息.虽然细节是特定于平台的,但加载器的任务通常是查找链接器生成的所有共享库引用,加载它们(递归地,因为每个DSO可以有自己的依赖项)并将它们放入程序的内存空间.
小智 5
这是一个很大的话题,我不想提供明确的答案。但是,既然您说您正在使用Code::Blocks,那么这是将库添加到项目的顺序: