当前位置:   article > 正文

[Visual Studio] VC++项目属性之C/C++运行库设置_vc++运行库

vc++运行库

什么是MSVC运行库(CRT)?

MSVC(Microsoft Visual C++)的运行库是一组库文件,它们包含了一些常用的函数和数据结构,可以在程序运行时被调用。这些库文件通常会被编译到程序中,以提高程序的性能和可移植性。

MSVC的运行库包括以下几个部分:

  1. 标准库:包含了一些基本的函数和数据结构,如字符串、数组、链表等。
  2. 数学库:包含了一些数学函数,如三角函数、对数函数、指数函数等。
  3. 图形库:包含了一些图形绘制函数,如绘制直线、矩形、圆形等。
  4. 网络库:包含了一些网络通信函数,如套接字编程、TCP/IP协议等。
  5. 数据库库:包含了一些数据库操作函数,如连接数据库、执行SQL语句等。

除了上述几个部分外,MSVC还提供了其他一些运行库,如多线程库、加密解密库、XML解析库等。这些库可以根据需要进行选择和使用。

MSVC的运行库有哪些?

MSVC运行库通常包括以下几种:

  1. Multi-threaded DLL (/MD):多线程 DLL 运行库,适用于多线程应用程序。
  2. Multi-threaded Debug DLL (/MDd):多线程调试 DLL 运行库,适用于多线程调试应用程序。
  3. Multi-threaded (/MT):多线程运行库,适用于多线程应用程序和调试应用程序。
  4. Multi-threaded Debug (/MTd):多线程调试运行库,适用于多线程调试应用程序和调试应用程序。
  5. Single-threaded (/ST):单线程运行库,适用于单线程应用程序和调试应用程序。
  6. Single-threaded Debug (/STd):单线程调试运行库,适用于单线程调试应用程序和调试应用程序。
  7. Dynamic-Link Library (/LD):动态链接库运行库,适用于 Windows 应用程序。
  8. Static-Link Library (/LIB):静态链接库运行库,适用于 Windows 应用程序。

备注:目前VS已经不支持单线程的运行库。

如何设置C/C++运行库

  1. 在 Visual Studio 中打开要配置的项目。
  2. 选择“属性”菜单,并选择“配置属性”>“C/C++”>“代码生成”。
  3. 在“运行库”下拉菜单中选择你需要使用的运行库,默认值一般为“多线程调试 DLL (/MDd)”。

多线程 (/MT)、多线程调试 (/MTd)、多线程 DLL (/MD)、多线程调试 DLL (/MDd)的区别

多线程 (/MT)、多线程调试 (/MTd)、多线程 DLL (/MD)、多线程调试 DLL (/MDd) 都是用于支持多线程的运行库选项。它们的区别在于是否包含调试符号信息和是否生成调试信息。

  1. 多线程 (/MT): 该选项适用于单线程应用程序和调试应用程序,并启用了多线程支持,但不包含调试符号信息和调试信息。
  2. 多线程调试 (/MTd): 该选项适用于多线程调试应用程序,并启用了多线程支持和调试符号信息,但不生成调试信息。
  3. 多线程 DLL (/MD): 该选项适用于多线程 DLL 应用程序,并启用了多线程支持和调试符号信息,但不生成调试信息。
  4. 多线程调试 DLL (/MDd): 该选项适用于多线程调试 DLL 应用程序,并启用了多线程支持、调试符号信息和调试信息。

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)”以及他们之间的区别。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/793219
推荐阅读
相关标签
  

闽ICP备14008679号