C标准库在Windows中链接

  1. 标准库和运行时库是否有区别?

  2. Windows中的C标准库与Windows C RT库相同吗?

  3. 它在msvcrt.dll中实现吗? 如果不是,在哪里呢?

  4. 如何和何时该库链接到一个可执行文件? 有相对地址的.lib文件吗?

对不起,如果我混合一些东西…

在Windows上,有3个模型在调试和非调试,即6个在一起

1)单线程2)多线程使用MSVCRT.DLL 3)多线程不使用MSVCRT.dll

默认情况下,窗口选择选项2.这是唯一使用运行时库的选项。 使用选项1和3,将所有内容链接到可执行文件中。 你可以把这个可执行文件从95以上的任何Windows机器上运行起来。 不同之处在于情况2文件比情况1或3要小得多。重要的是如果你想把文件压缩到CD或软盘上。 情况2也与特定版本的MSVCRT相关联。 例如,如果在VC6上构建它,并尝试在Windows 7上运行该可执行文件,它将无法工作,除非在W7机器上具有VC6 msvcrt。

问题1:标准和运行时间的区别。 案例1和3,没有。 案例2:是的。 .lib只是一个跳转表。 .dll包含实际的代码

问题2:和问题1不一样吗?

问题3:msvcrt = Microsoft Visual C运行时。 这是运行时库

问题4:在编译时,如何使用链接器,何时链接。 在情况1和3的运行时间,它已经准备好了。 情况2,如何 – 它已经完成。 WHEN – 在跳转表代码与DLL链接之前,还有一个额外的步骤。 这个额外的步骤使得情况2的可执行文件加载速度较慢(不是任何人都会注意到我们现在使用的超高速机器)。