羽毛球

生活在别处

导航

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

留言簿(29)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

链接时如何选择C Run-Time(CRT) library

在Windows下有六种类型CRTLib(C运行库):
Reusable Library                Switch    Library    Macro(s) Defined
----------------------------------------------------------------
Single Threaded                     /ML       LIBC               (none)
Static MultiThread                  /MT       LIBCMT         _MT
Dynamic Link (DLL)              /MD       MSVCRT        _MT and _DLL
Debug Single Threaded           /MLd      LIBCD          _DEBUG
Debug Static MultiThread        /MTd      LIBCMTD    _DEBUG and _MT
Debug Dynamic Link (DLL)    /MDd      MSVCRTD    _DEBUG, _MT, and _DLL

MT和MD都适用于多线程,其区别是:
MT为静态链接CRT,这样编译出来exe是自包含的,所以会相对大一些,但运行时不用再load CRT库。
MD为动态链接CRT,编译出来exe会小一些,运行时需要load CRT,性能有一点点损失。

任何工程都应该使用同样的CRT Library。即要么都是/ML,要么都是/MTD, 如此类推。

如果一个程序中混合使用不同类型的CRT,有时可以通过link,这样会存在不同CRT的copy,并导致以下问题:
    1)在一个lib中new出来内存,在另一个lib中delete,会crash。
    2)不能在多个lib中共享file handle。
    3)一个lib中设置locale(本地化有关),不能在另一个lib中起作用。

当工程比较大,包含的lib很多,特别当有外部lib(Third party library)存在时,link很容易发生下面这样的错误。
LIBCMTD.lib(chsize.obj) : error LNK2005: __chsize already defined in MSVCRTD.lib(MSVCRTD.dll)
这说明,你的工程使用了不同类型的CRT。这个时候首先一定要坚信这个原则:整个工程用同样的CRT Lib就可以解决问题。然后耐心一一检查每个lib。
如果恰恰某个外部lib用MT,另一个用MD,这个时候就比较痛苦。
    如果有他们源码,就编译一个MT or MD类型的lib,以统一使用一个类型CRT。
    如果没有,那可能只好选择其他的lib。

一般,我个人习惯将所有lib都编译为MT。出于其他需要,会同时提供MT(MTd)和MD(MDd)两种版本。

posted on 2005-06-30 12:48 Michael 阅读(4168) 评论(8)  编辑 收藏

评论

# 个人喜欢MD,C的动态库就好些了。 2005-06-30 15:20 Diviner

rt

# re: 链接时如何选择C Run-Time(CRT) library 2005-11-24 09:36

好贴

# re: 链接时如何选择C Run-Time(CRT) library 2006-07-18 18:11 wenew

解释得真清楚,谢谢

# 链接时如何选择C Run-Time(CRT) library [TrackBack] 2008-07-11 14:28 源码工作室

链接时如何选择CRun-Time(CRT)library 链接时如何选择CRun-Time(CRT)library ...
源码工作室引用了该文章,地址:http://www.cnblogs.com/goodcandle/archive/2008/07/11/1240758.html

# 链接时如何选择C Run-Time(CRT) library[TrackBack] 2008-08-23 08:21 大熊猫

链接时如何选择CRun-Time(CRT)library 在Windows下有六种类型CRTLib(C运行库): ReusableLibrary
大熊猫引用了该文章,地址:http://www.cnblogs.com/chenhs/archive/2008/08/23/1274501.html

# re: 链接时如何选择C Run-Time(CRT) library 2008-09-17 14:21 北京华夏航空服务有限公司

  


    


    

   [url=http://www.bjjypw.com/gjjp/09_17_6005.html]北京到几内亚的特价机票查询/北京至几内亚的特价机票查询/北京直飞几内亚往返特价机票查询/北京到几内亚的留学生机票查询/几内亚的机票查询">北京到几内亚的特价机票查询/北京至几内亚的特价机票查[/url]
   [url=http://www.bjjypw.com/gjjp/09_58_1174.html]北京到科纳克里的特价机票查询/北京至科纳克里的特价机票查询/北京直飞科纳克里往返特价机票查询/北京到科纳克里的留学生机票查询/科纳克里的机票查询">北京到科纳克里的特价机票查询/北京至科纳克里的特价机[/url]



   [url=http://www.bjjypw.com/gjjp/09_35_1247.html]北京到塞拉利昂的特价机票查询/北京至塞拉利昂的特价机票查询/北京直飞塞拉利昂往返特价机票查询/北京到塞拉利昂的留学生机票查询/塞拉利昂的机票查询">北京到塞拉利昂的特价机票查询/北京至塞拉利昂的特价机[/url]
   [url=http://www.bjjypw.com/gjjp/09_06_1773.html]北京到弗里敦的特价机票查询/北京至弗里敦的特价机票查询/北京直飞弗里敦往返特价机票查询/北京到弗里敦的留学生机票查询/弗里敦的机票查询">北京到弗里敦的特价机票查询/北京至弗里敦的特价机票查[/url]



   [url=http://www.bjjypw.com/gjjp/09_53_778.html]北京到科特迪瓦的特价机票查询/北京至科特迪瓦的特价机票查询/北京直飞科特迪瓦往返特价机票查询/北京到科特迪瓦的留学生机票查询/科特迪瓦的机票查询">北京到科特迪瓦的特价机票查询/北京至科特迪瓦的特价机[/url]
   [url=http://www.bjjypw.com/gjjp/09_24_6929.html]北京到阿比让的特价机票查询/北京至阿比让的特价机票查询/北京直飞阿比让往返特价机票查询/北京到阿比让的留学生机票查询/阿比让的机票查询">北京到阿比让的特价机票查询/北京至阿比让的特价机票查[/url]



   [url=http://www.bjjypw.com/gjjp/09_52_5198.html]北京到加纳的特价机票查询/北京至加纳的特价机票查询/北京直飞加纳往返特价机票查询/北京到加纳的留学生机票查询/加纳的机票查询">北京到加纳的特价机票查询/北京至加纳的特价机票查询/[/url]
   [url=http://www.bjjypw.com/gjjp/09_22_8554.html]北京到阿克拉的特价机票查询/北京至阿克拉的特价机票查询/北京直飞阿克拉往返特价机票/北京到阿克拉的留学生机票查询/阿克拉的机票查询">北京到阿克拉的特价机票查询/北京至阿克拉的特价机票查[/url]



   [url=http://www.bjjypw.com/gjjp/09_55_551.html]北京到阿布贾的特价机票查询/北京至阿布贾的特价机票查询/北京直飞阿布贾往返特价机票查询/北京到阿布贾的留学生机票查询/阿布贾的机票查询">北京到阿布贾的特价机票查询/北京至阿布贾的特价机票查[/url]
   [url=http://www.bjjypw.com/gjjp/09_15_1746.html]北京到尼日利亚的特价机票查询/北京至尼日利亚的特价机票查询/北京直飞尼日利亚往返特价机票查询/北京到尼日利亚的留学生机票查询/尼日利亚的机票查询">北京到尼日利亚的特价机票查询/北京至尼日利亚的特价机[/url]



   [url=http://www.bjjypw.com/gjjp/09_48_894.html]北京到拉各斯的特价机票查询/北京至拉各斯的特价机票查询/北京直飞拉各斯往返特价机票查询/北京到拉各斯的留学生机票查询/拉各斯的机票查询">北京到拉各斯的特价机票查询/北京至拉各斯的特价机票查[/url]
   [url=http://www.bjjypw.com/gjjp/09_36_5441.html]北京到喀麦隆的特价机票查询/北京至喀麦隆的特价机票查询/北京直飞喀麦隆往返特价机票查询/北京到喀麦隆的留学生机票查询/喀麦隆的机票查询">北京到喀麦隆的特价机票查询/北京至喀麦隆的特价机票查[/url]



   [url=http://www.bjjypw.com/gjjp/09_46_2687.html]北京到雅温得的特价机票查询/北京至雅温得的特价机票查询/北京直飞雅温得往返特价机票查询/北京到雅温得的留学生机票查询/雅温得的机票查询">北京到雅温得的特价机票查询/北京至雅温得的特价机票查[/url]
   [url=http://www.bjjypw.com/gjjp/09_55_689.html]北京到杜阿拉的特价机票查询/北京至杜阿拉的特价机票查询/北京直飞杜阿拉往返特价机票查询/北京到杜阿拉的留学生机票查询/杜阿拉的机票查询">北京到杜阿拉的特价机票查询/北京至杜阿拉的特价机票查[/url]


 

# re: 链接时如何选择C Run-Time(CRT) library 2008-09-17 14:22 北京华夏航空服务有限公司

http://www.bjjypw.com/gjjp/09_48_894.html">http://www.bjjypw.com/gjjp/09_17_6005.htmlhttp://www.bjjypw.com/gjjp/09_48_894.html
http://www.bjjypw.com/gjjp/09_55_689.html]
http://www.bjjypw.com/gjjp/09_48_894.html

# re: 链接时如何选择C Run-Time(CRT) library 2008-11-05 15:57 toki_jiang

    [url=http://www.wdjpw.com/gjjp/10_41_1867.html]北京到阿尔及尔机票|北京至阿尔及尔机票预订|北京到阿尔及尔航班查询">北京到阿尔及尔机票|北京至阿尔及尔机票预订|北京到阿[/url]
    [url=http://www.wdjpw.com/gjjp/10_14_5035.html]北京到克拉斯诺达尔机票,克拉斯诺达尔到港航班时刻表,克拉斯诺达尔出港航班时刻表">北京到克拉斯诺达尔机票,克拉斯诺达尔到港航班时刻表,[/url]



    [url=http://www.wdjpw.com/gjjp/10_16_7912.html]北京到摩尔曼斯科机票,摩尔曼斯科到港航班时刻表,摩尔曼斯科出港航班时刻表">北京到摩尔曼斯科机票,摩尔曼斯科到港航班时刻表,摩尔[/url]
    [url=http://www.wdjpw.com/gjjp/10_13_6448.html]北京到芝加哥机票/北京到芝加哥特价机票">北京到芝加哥机票/北京到芝加哥特价机票[/url]



    [url=http://www.wdjpw.com/gjjp/10_31_2486.html]北京到旧金山机票/北京到旧金山特价机票/">北京到旧金山机票/北京到旧金山特价机票/[/url]
    [url=http://www.wdjpw.com/gjjp/10_40_2855.html]北京到丹佛机票/北京到丹佛特价机票">北京到丹佛机票/北京到丹佛特价机票[/url]



    [url=http://www.wdjpw.com/gjjp/10_14_3953.html]北京到西雅图机票/北京到西雅图特价机票">北京到西雅图机票/北京到西雅图特价机票[/url]
    [url=http://www.wdjpw.com/gjjp/10_48_5117.html]北京到华盛顿机票/北京到华盛顿特价机票">北京到华盛顿机票/北京到华盛顿特价机票[/url]



    [url=http://www.wdjpw.com/gjjp/10_52_9802.html]北京到亚特兰大机票/这里有各航空公司飞亚特兰大机票价格及航班">北京到亚特兰大机票/这里有各航空公司飞亚特兰大机票价[/url]
    [url=http://www.wdjpw.com/gjjp/10_12_3537.html]北京到底特律机票/北京到底特律特价机票/这里有各航空公司飞底特律机票">北京到底特律机票/北京到底特律特价机票/这里有各航空[/url]

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]