windows下的C标准库链接

windows下的C标准库链接,c,windows,dll,standard-library,C,Windows,Dll,Standard Library,标准库和运行库之间有区别吗 windows中的C标准库是否与windows C RT库相同 它是否在msvcrt.dll中实现?如果没有,在哪里 该库如何以及何时链接到可执行文件?是否有相对地址的.lib文件 很抱歉,如果我混淆了一些东西…在windows上,调试和非调试模式共有3种,即6种 1) 单螺纹 2) 使用MSVCRT.DLL进行多线程 3) 不使用MSVCRT.dll的多线程 默认情况下,windows选择选项2。这是唯一一个使用运行库的。使用选项1和3,将中的所有内容链接到可执行文

标准库和运行库之间有区别吗

  • 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上构建它并尝试在Windows7上运行可执行文件,则除非您在W7机器上安装了VC6 msvcrt,否则它将无法工作

    问题1:标准和运行时之间的差异。案例1和3,否。案例2:是。lib只是一个跳转表。.dll包含实际的代码

    问题2:这不是问题1的问题吗

    问题3:msvcrt=Microsoft Visual C运行时。这是运行库


    问题4:在编译时,如何使用链接器,何时链接。在案例1和案例3的运行时,它已准备就绪。在案例2中,已经完成了。当-还有一个附加步骤,跳转表代码在运行前与DLL链接。这一额外步骤使案例2的可执行文件的加载速度变慢(在我们现在拥有的超高速机器上,没有人会注意到这一点)。

    请注意,Visual Studio的现代版本不再包括单线程库。另外,他们不使用MSVCRT.DLL,而是使用msvcrtn.DLL,其中nn取决于Visual Studio的版本,这取决于您使用的构建工具。