[英]C Standard Library linking in windows
标准库和运行时库之间有区别吗?
Windows中的C标准库是否与Windows C RT库相同?
它是在msvcrt.dll中实现的吗? 如果不是,那么在哪里?
如何以及何时将该库链接到可执行文件? 是否有相对地址的.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.