C标准库在Windows中链接

时间:2014-03-13 16:38:54

标签: c windows dll standard-library

  1. 标准库和运行时库之间有区别吗?

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

  3. 是否在msvcrt.dll中实现?如果不是,那么在哪里呢?

  4. 该库如何以及何时链接到可执行文件?是否有相对地址的.lib文件?

  5. 很抱歉,如果我混合了一些东西......

1 个答案:

答案 0 :(得分:2)

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

1)单螺纹 2)使用MSVCRT.DLL进行多线程处理 3)多线程不使用MSVCRT.dll

默认情况下,windows选择选项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的可执行文件加载速度变慢(并不是任何人都会注意到我们现在拥有的超高速机器)。

相关问题