VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试。
DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。目前Win7、Win10等,选择MD问题不大,但是XP等一些比较老的系统需要选择MT。
为什么这么说呢?
下面我用俩句话解释一下MT和MD的区别。(1)/MD,表示运行时库由操作系统提供一个DLL,程序里不集成。编译出来的文件比较小。使用的库文件是 MSVCRT.lib
(2)/MT,表示运行时库由程序集成。编译出来的文件比较大。在运行的机器上不需要安装依赖的VS的动态库,使用的库文件是 LIBCMT.lib
有一定经验的开发者,可能遇到在Windows10上编好的程序,放到xp系统上就不能运行了,还会提示缺少MSVCRT.dll文件,这就是因为程序是以MD编译的,而Windows xp系统上缺少对应的运行时库。
那么MTD和MDD又是什么意思呢?d的意思就是debug,MTD和MDD就是MT和MD的调试版。