MT: mutithread Static,多线程库,编译器会从运行时库里面选择多线程静态连接库来解释程序中的代码,即连接LIBCMT.lib库
MTd:mutithread debug Static ,多线程调试版,连接LIBMITD.lib库
MD:mutithread +Dynamic,多线程动态库,连接MSVCRT.lib库,这是个导入库,对应动态库为MSVCRT.dll
MDd: mutithread +Dynamic+debug,多线程动态调试库,连接MSVCRTD.lib库,对应动态库为MSVCRTD.dll
/MT和/MTd
/MT和/MTd表示采用多线程CRT库的静态lib版本。
该选项会在编译时将运行时库以静态lib的形式完全嵌入。
该选项生成的可执行文件运行时不需要运行时库dll的参加,会获得轻微的性能提升。
但最终生成的二进制代码因链入庞大的运行时库实现而变得非常臃肿
/MD和/MDd
/MD和/MDd表示采用多线程CRT库的动态dll版本,
会使应用程序使用运行时库特定版本的多线程DLL。
链接时将按照传统VC链接dll的方式将运行时库MSVCRxx.DLL的导入库MSVCRT.lib链接。
当多项目以MD方式运作时,其内部会采用同一个堆。
结论:/MD和/MDd将是趋势,/MT和/MTd在非必要时最好也不要采用了