-
标准库和运行库之间有区别吗?
-
windows中的C标准库与windows C RT库相同吗?
-
它是在msvcrt.dll中实现的吗?如果没有,在哪里?
-
如何以及何时将该库链接到可执行文件?有相对地址的.lib文件吗?
对不起,如果我把一些东西弄混了。。。
在windows上,有3种型号处于调试和非调试状态,即6种型号加在一起的
1( 单螺纹2( 使用MSVCRT的多线程。DLL3( 多线程不使用MSVCRT.dll
默认情况下,windows会选择选项2。这是唯一一个使用运行库的。使用选项1和3,中的所有内容都链接到可执行文件中。您可以将该可执行文件带到95以上的任何windows机器上,它应该可以工作。不同的是,情况2的文件比情况1或3小得多。重要的是,如果您正试图将文件压缩到CD或软盘上。此外,情况2与MSVCRT的特定版本有关。例如,如果你在VC6上构建它,并尝试在Windows7上运行可执行文件,除非你在W7机器上有VC6-msvcrt,否则它不会工作。
问题1:标准和运行时之间的区别。案例1&3,没有。案例2:是的。lib只是一个跳转表。.dll包含实际的代码
问题2:这不是和问题1一样的问题吗?
问题3:msvcrt=Microsoft Visual C运行时。这是运行库
问题4:在编译时,如何使用链接器,何时链接。在情况1&3它已经准备好了。在情况2中,如何-已经完成。WHEN-还有一个额外的步骤,跳转表代码在运行之前与DLL链接。这个额外的步骤使情况2的可执行程序加载速度变慢(在我们现在的超高速机器中,没有人会注意到这一点(。