本文共 2596 字,大约阅读时间需要 8 分钟。
在c++->code generation中的Runtime Library有以下几种选项
/MD[d]/MT[d]/LD[d]
选项 说明 /MD 使应用程序使用运行时库的多线程并特定于 DLL 的版本。定义 _MT 和 _DLL,并使编译器将库名 MSVCRT.lib 放入 .obj 文件中。 用此选项编译的应用程序静态链接到 MSVCRT.lib。该库提供允许链接器解析外部引用的代码层。实际工作代码包含在 MSVCR90.DLL, 中,该库必须在运行时对于与 MSVCRT.lib 链接的应用程序可用。 当 /MD 与 _STATIC_CPPLIB 预处理器定义 (/D_STATIC_CPPLIB) 一起使用时,您的应用程序将与静态多线程标准 C++ 库 (libcpmt.lib) 而非动态版本 (msvcprt.lib) 链接,但仍通过 msvcrt.lib 动态链接到主 CRT。 请注意,不支持 _STATIC_CPPLIB 预处理器定义和 /clr 或 /clr:pure 编译器选项的组合。有关 /clr 选项的限制的更多信息,请参见 /clr 限制。 /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。
如果在debug和release版本中的运行时存在差异,可以查看下面的表,查下当前选项会产生什么样的影响。
C Run-Time Libraries (CRT)
C run-time library (without iostream or standard C++ library) Associated DLL Characteristics Option Preprocessor directives libcmt.lib None, static link. Multithreaded, static link /MT _MT msvcrt.lib msvcr90.dll Multithreaded, dynamic link (import library for MSVCR90.DLL). Be aware that if you use the Standard C++ Library, your program will need MSVCP90.DLL to run. /MD _MT, _DLL libcmtd.lib None, static link Multithreaded, static link (debug) /MTd _DEBUG, _MT msvcrtd.lib msvcr90d.dll Multithreaded, dynamic link (import library for MSVCR90D.DLL) (debug). /MDd _DEBUG, _MT, _DLL msvcmrt.lib msvcm90.dll C Runtime import library. Used for mixed managed/native code. /clr msvcurt.lib msvcm90.dll C Runtime import library compiled as 100% pure MSIL code. All code complies with the ECMA URT spec for MSIL. /clr:pure
Standard C++ Library
LIBCPMT.LIB Multithreaded, static link /MT _MT MSVCPRT.LIB Multithreaded, dynamic link (import library for MSVCP90.dll) /MD _MT, _DLL LIBCPMTD.LIB Multithreaded, static link /MTd _DEBUG, _MT MSVCPRTD.LIB Multithreaded, dynamic link (import library for MSVCP90D.DLL) /MDd _DEBUG, _MT, _DLL
转载地址:http://lieki.baihongyu.com/