赞
踩
MSVC(Microsoft Visual C++)的运行库是一组库文件,它们包含了一些常用的函数和数据结构,可以在程序运行时被调用。这些库文件通常会被编译到程序中,以提高程序的性能和可移植性。
MSVC的运行库包括以下几个部分:
除了上述几个部分外,MSVC还提供了其他一些运行库,如多线程库、加密解密库、XML解析库等。这些库可以根据需要进行选择和使用。
MSVC运行库通常包括以下几种:
备注:目前VS已经不支持单线程的运行库。
多线程 (/MT)、多线程调试 (/MTd)、多线程 DLL (/MD)、多线程调试 DLL (/MDd) 都是用于支持多线程的运行库选项。它们的区别在于是否包含调试符号信息和是否生成调试信息。
VC++项目如何选择运行库?
在Debug模式下,使用调试运行库:多线程调试(/MTd)、多线程调试DLL(/MDd)
在Release模式下,使用发布运行库:多线程(/MT)、多线程DLL(/MD)
Debug模式下运行库带d,但Release模式不带。调试与发布的区别在于,Release模式省略了程序的调试信息,就是删除了Debug模式下的用于调试的内容,Release模式下生成的可执行文件的大小一般比Debug模式下生成的要小。
静态链接:多线程(/MT)、多线程调试(/MTd)
动态链接:多线程DLL(/MD)、多线程调试DLL(/MDd)
动态链接为D,静态链接为T。两者的区别在于,静态链接将程序所依赖的运行库集成到了可执行文件中,可执行文件运行时不再需要运行库;动态链接没有把程序所依赖的运行库集成到可执行文件中,可执行文件运行时需要运行库。
静态连接生成的可执行文件的大小一般大于动态链接生成的。
VS 的VC++项目,默认Release模式会选择 多线程DLL(/MD),Debug模式会选择多线程调试DLL(/MDd)。但有些情况下,如果你依赖了第三方库(比如google test)。默认情况下,google test会被构建成静态库,因此我们在使用了google test的vc++项目就需要选择多线程调试(/MTd)或者 多线程(/MT),否则单元测试无法正常运行。 具体可以参考 [C++] 基础教程 - 如何使用google test进行单元测试
本文简单介绍了MSVC的常用的几种运行库“多线程 (/MT)、多线程调试 (/MTd)、多线程 DLL (/MD)、多线程调试 DLL (/MDd)”以及他们之间的区别。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。