繁体   English   中英

C标准库在Windows中链接

[英]C Standard Library linking in windows

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM