[C++ Primer Plus学习笔记Ⅲ]Game Engine中关于编译、链接的基本单元的笔记

来源:互联网 发布:sai绘图软件手机版 编辑:程序博客网 时间:2024/05/22 17:36

源文件:常见的C++源文件扩展名为.c、.cc、.cxx和.cpp,这些文件包含程序的大量源代码。

翻译单元:技术上,源文件称为翻译单元。

头文件: 特殊的源文件,通常用于在多个翻译单元之间分享信息,例如类型声明及函数原型。 C++预处理器(preprocessor)预先把每个#include语句替换为相对应的头文件内容,然后再把翻译单元送交给编译器。

对象文件:编译翻译单元后,输出的机器码会储存在对象文件(object file)(对象文件中的机器码是可重新定位的,未连接的)

程序库(library):对象文件可以集合成程序库。

可执行文件(executable):链接器把对象文件和程序库链接成可执行文件。可执行文件包含完全解析的机器码,操作系统可载入及执行这些机器码。

动态链接库(DLL):是一种特殊的库,其行为像正常的静态链接库和执行文件的混合体。

注意:使用了DLL的可执行文件含有未完全链接(partially linked)的机器代码。在最后的执行文件中已解析大多数函数及数据参考,但存于DLL的函数和数据参考则维持未连接状态。当运行可执行文件时,操作系统需要解析所有未链接的函数。在此过程中,操作系统会找出合适的DLL文件,若该DLL文件不在内存中则要载入,之后需要修正一些内存地址。载入动态链接库是操作系统非常重要的功能,因为这样就可以只更新个别DLL,而不需要更新使用到这些DLL的可执行文件。