我正在尝试在编译C / C ++项目时如何使用MT和MD选项。但是,由于无法将这些假定的缩写词扩展为有意义的短语,因此我忘记了从一个段落到下一个段落中的哪一个。奇怪的是,我读过的所有文章都没有定义M,T和D。它们代表什么?
答案 0 :(得分:3)
来自上面chris给出的编译器选项链接:
/MD Creates a multithreaded DLL using MSVCRT.lib.
/MDd Creates a debug multithreaded DLL using MSVCRTD.lib.
/MT Creates a multithreaded executable file using LIBCMT.lib.
/MTd Creates a debug multithreaded executable file using LIBCMTD.lib.
因此MT表示已读取的 M ulti t ,而MD表示 M 多线程的 D LL。>
答案 1 :(得分:1)
这些cl.exe
的开关指定要链接的C运行时库; /MT
指定与LIBCMT.LIB
链接; /MD
指定与MSVCRT.LIB
链接。
更详细地描述了不同的CRT库here。 LIBCMT
和MSVCRT
之间的主要区别在于,前者将CRT静态链接到您的输出文件中,而MSVCRT
链接到VC运行时DLL(与它的名字不同,它不是MSVCRT.DLL
(请参阅here)。
答案 2 :(得分:0)
D LL和 t ernal可以用作区分/ MD和/ MT的助记符。