标准库和运行时库之间有区别吗?
Windows中的C标准库是否与Windows C RT库相同?
是否在msvcrt.dll中实现?如果不是,那么在哪里呢?
该库如何以及何时链接到可执行文件?是否有相对地址的.lib文件?
很抱歉,如果我混合了一些东西......
答案 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的可执行文件加载速度变慢(并不是任何人都会注意到我们现在拥有的超高速机器)。