C++链接器linker

linking是从c++源码到二进制可执行文件的一个过程。
我们编译后会通过一个叫做链接的过程,链接的主要工作是找到每个符号和符号的位置并把它们链接在一起。
我们需要一种方法将这些文件链接到一个程序。即使没有外部文件里的函数,比如你已经把一个程序写在一个文件里了。应用程序仍需要知道入口点在哪里

案例

在vs中我们有一个非常简单的项目,只包含一个源文件math.cpp.
在这里有两个函数log和multiply,multiply实际上调用了log函数,打印出multiply这个单词到控制台。然后返回a*b
C++链接器linker_第1张图片
编译有两个阶段-编译和链接。
你可以对其进行区分,如果你按ctrl-F7或者按下编译按钮,只有编译会发生链接完全不会发生。然而如果你build你的项目或者按F5运行它会编译然后链接。
如果你按crl+f7可以发现没发生任何错误
如果你按build会发现得到一个链接错误,缺少入口函数,我们的主函数。
因为我们的编译分为两个阶段,如果编译中出现错误,错误会以c开头,如c243.
如果链接中出现问题会以LNK开头
你在文件的属性,可以知道配置类型是exe,exe必须要有一个入口点。
C++链接器linker_第2张图片
C++链接器linker_第3张图片
在一个文件中即可build成功。
如果这些函数存在多个文件中。如把log函数加入log.cpp中,再执行会报错,因为找不到名为log的函数
C++链接器linker_第4张图片
所以把声明加入math.cpp中可以发现
C++链接器linker_第5张图片
编译成功

你可能感兴趣的:(C++学习)