msdn上面的解釋:
MT:mutithread,多線程庫,編譯器會從運行時庫里面選擇多線程靜態連接庫來解釋程序中的代碼,即連接LIBCMT.lib庫
MTd:mutithread+debug,多線程調試版,連接LIBMITD.lib庫
MD:MT+DLL,多線程動態庫,連接MSVCRT.lib庫,這是個導入庫,對應動態庫為MSVCRT.dll
MDd: MT+DLL+debug,多線程動態調試庫,連接MSVCRTD.lib庫,對應動態庫為MSVCRTD.dll
開發多線程程序時(單線程本文不做討論),需要選擇MT、MTd、MD、MDd其中的一個。
對於MT/MTd,由於連接運行時庫是LIBCMT.lib/LIBCMTD.lib,這兩個庫是靜態庫,所以此種方式編譯的程序,移到另一台機器上面也可以正常運行。
但是對於MD/MDd,連接的是動態庫,所以如果另一台機器上沒有MSVCRT.dll/MSVCRTD.dll時,就提示缺少動態庫這樣的錯誤。