/MD、/MT、/LD(使用运行库)
允许您指示多线程模块是否是 DLL,并可以选择运行库的零售版本或调试版本。
/MD[d]
/MT[d]
/LD[d]
备注
选项 |
说明 |
---|---|
/MD |
使应用程序使用运行库的多线程并特定于 DLL 的版本。 定义 _MT 和 _DLL,并使编译器将库名 MSVCRT.lib 放入 .obj 文件中。 用此选项编译的应用程序静态链接到 MSVCRT.lib。 此库提供允许链接器解析外部引用的代码的层。 实际工作代码包含在 MSVCR100.DLL, 中,该库必须在运行时对于与 MSVCRT.lib 链接的应用程序可用。 |
/MDd |
定义 _DEBUG、_MT 和 _DLL,并使应用程序使用运行库的调试多线程并特定于 DLL 的版本。 它还使编译器将库名 MSVCRTD.lib 放入 .obj 文件中。 |
/MT |
使应用程序使用运行库的多线程静态版本。 定义 _MT 并使编译器将库名 LIBCMT.lib 放入 .obj 文件中,以便链接器使用 LIBCMT.lib 解析外部符号。 |
/MTd |
定义 _DEBUG 和 _MT。 此选项还使编译器将库名 LIBCMTD.lib 放入 .obj 文件中,以便链接器使用 LIBCMTD.lib 解析外部符号。 |
/LD |
创建 DLL。 将 /DLL 选项传递到链接器。 链接器查找 DllMain 函数,但并不需要该函数。 如果没有编写 DllMain 函数,链接器将插入返回 TRUE 的 DllMain 函数。 链接 DLL 启动代码。 如果命令行上未指定导出 (.exp) 文件,则创建导入库 (.lib);将导入库链接到调用您的 DLL 的应用程序。 将 /Fe(命名 EXE 文件) 解释为命名 DLL 而不是 .exe 文件;默认程序名成为基名称.dll 而不是基名称.exe。 除非显式指定 /MD,否则将暗指 /MT。 |
/LDd |
创建调试 DLL。 定义 _MT 和 _DEBUG。 |
有关 C 运行库以及使用 /clr(公共语言运行时编译) 进行编译时要使用哪些库的更多信息,请参见C Run-Time Libraries。
传递给链接器的给定调用的所有模块都必须使用相同的运行库编译器选项(/MD、/MT、/LD)进行编译。
有关使用运行库的调试版本的更多信息,请参见 Run-Time Library Reference。
知识库文章 Q140584 也讨论如何选择适当的 C 运行库。
有关 DLL 的进一步讨论,请参见 DLL。
在 Visual Studio 开发环境中设置此编译器选项
打开该项目的**“属性页”**对话框。 有关详细信息,请参见 如何:打开项目属性页。
单击**“C/C++”**文件夹。
单击**“代码生成”**属性页。
修改**“运行库”**属性。
以编程方式设置此编译器选项
- 请参见RuntimeLibrary。