VS编译方式 \MT \MD \MTd \MDd


在工程上右键-》属性-》c/c++-》代码生成-》运行库

其中四个选项的对应含义如下:

多线程调试Dll (/MDd) 对应的是MD_DynamicDebug

多线程Dll (/MD) 对应的是MD_DynamicRelease

多线程(/MT) 对应的是MD_StaticRelease

多线程(/MTd)对应的是MD_StaticDebug


MSDN中的描述如下:


/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 解析外部符号。


使用MT可以减少对很多VS自带库的潜在依赖,但是采用MT时,自身所引用的lib等都要采用相同的编译方式得来,即所有模块的生成方式应当保持一致性。


在MFC中 若要使用MT编译方式 则 属性->常规中MFC的使用应该改为 在静态中使用MFC


转载自http://blog.csdn.net/zhangla1220/article/details/50033541


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值