CRT Library Features

本文详细介绍了Visual C++中不同运行时库的选择及其特性,包括静态链接与动态链接库的区别,多线程的支持方式,以及与之关联的预处理指令。特别指出,在使用/clr编译选项时,代码将被链接到静态库msvcmrt.lib。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


CRT Library Features

    C                               C++

LIBCMT.lib <---> LIBCPMT.LIB

MSVCRT.lib <---> MSVCPRT.LIB

MSVCMRT.lib   <--->  N/A

MSVCMRT.lib: C Runtime static library. Used for mixed managed/native code.


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

msvcr110.dll

Multithreaded, dynamic link (import library for MSVCR110.DLL). Be aware that if you use the Standard C++ Library, your program will need MSVCP110.DLL to run.

/MD

_MT, _DLL

libcmtd.lib

None, static link

Multithreaded, static link (debug)

/MTd

_DEBUG, _MT

msvcrtd.lib

msvcr110d.dll

Multithreaded, dynamic link (import library for MSVCR110D.DLL) (debug).

/MDd

_DEBUG, _MT, _DLL

msvcmrt.lib

None, static link

C Runtime static library. Used for mixed managed/native code.

/clr

/clr:oldSyntax

 

msvcurt.lib

None, static link

C Runtime static library compiled as 100% pure MSIL code. All code complies with the ECMA URT spec for MSIL.

/clr:pure

 

The single-threaded CRT (libc.lib, libcd.lib) (formerly the/ML or/MLd options) is no longer available. Instead, use the multithreaded CRT. SeeMultithreaded Libraries Performance.

If you are using the /clr compiler switch, your code will be linked with a static library, msvcmrt.lib. The static library provides a proxy between your managed code and the native CRT. You cannot use the statically linked CRT ( /MT or /MTd options) with/clr. Use the dynamically-linked libraries (/MD or/MDd) instead.

This version (VS2013) of Visual C++ is not conformant with the C99 standard.

When /MD is used with _STATIC_CPPLIB defined (/D_STATIC_CPPLIB) it will cause the application to link with the static multithread Standard C++ Library (libcpmt.lib) instead of the dynamic version (msvcprt.lib) while still dynamically linking to the main CRT via msvcrt.lib.


Standard C++ Library

Standard C++ Library

Characteristics

Option

Preprocessor directives

LIBCPMT.LIB

Multithreaded, static link

/MT

_MT

MSVCPRT.LIB

Multithreaded, dynamic link (import library for MSVCP110.dll)

/MD

_MT, _DLL

LIBCPMTD.LIB

Multithreaded, static link

/MTd

_DEBUG, _MT

MSVCPRTD.LIB

Multithreaded, dynamic link (import library for MSVCP110D.DLL)

/MDd

_DEBUG, _MT, _DLL

Note   LIBCP.LIB and LIBCPD.LIB (via the old/ML and/MLd options) have been removed. Use LIBCPMT.LIB and LIBCPMTD.LIB instead via the/MT and/MTd options.



Should I compile with /MD or /MT?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值