Chinaunix首页 | 论坛 | 博客
  • 博客访问: 847462
  • 博文数量: 168
  • 博客积分: 5431
  • 博客等级: 大校
  • 技术积分: 1560
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-22 11:56
文章存档

2015年(2)

2014年(1)

2013年(12)

2012年(12)

2011年(15)

2010年(5)

2009年(16)

2008年(41)

2007年(64)

分类:

2008-04-30 07:55:34

线程   C   库:LIBCMT.LIB   和   MSVCRT.LIB  
  支持库   LIBCMT.LIB   是可重入库,用于创建多线程程序。调用共享的   MSVCRT70.DLL   中代码的   MSVCRT.LIB   库也是可重入库。当应用程序调用这些库中的函数时,可以应用下列规则:    
   
  所有库调用必须使用   C   (__cdecl)   调用约定;使用其他调用约定(如   __fastcall   或   __stdcall)编译的程序必须使用它们调用的运行时库函数的标准包含文件。    
  传递到库函数的变量必须由值传递或转换为指针。    
  使用   LIBCMT.LIB   生成的程序不与它们所调用的任何动态链接库共享   C   运行时库代码或数据。  
   
  LIBCMT.LIB   和   MSVCRT.LIB   以外的其他选择  
  如果不使用   LIBCMT.LIB   来生成多线程程序,必须执行下列操作:    
   
  使用标准   C   库并且只允许可重入函数集进行库调用。    
  使用   Win32   API   线程管理函数,如   CreateThread。    
 通过使用   Win32   服务(如信号灯和   EnterCriticalSection   和   LeaveCriticalSection   函数),为不可重入的函数提供自己的同步。    
  警告   多线程库   LIBCMT.LIB   包括   _beginthread   和   _endthread   函数。_beginthread   函数执行初始化,若没有该函数,许多   C   运行时函数将失败。如果要调用   C   运行时函数,必须使用   C   程序中用   LIBCMT.LIB   生成的   _beginthread,而不是   CreateThread。  
  多线程库编译选项  
 若要生成使用   C   运行时库的多线程应用程序,必须通知编译器使用特殊版本的库   (LIBCMT.LIB)。若要选择这些库,请首先打开项目的属性页对话框(“视图”菜单)并单击   C/C++   文件夹。选择“代码生成”页。从“运行时库”下拉框中选择“多线程”。单击“确定”按钮以返回编辑状态。  
   
 命令行中的多线程库编译器选项   (/MT)   是用   LIBCMT.LIB   生成多线程程序的最佳途径。在创建新项目的过程中指定多线程应用程序时,自动设置此选项,此选项将   LIBCMT   库名嵌入对象文件中。  
阅读(1312) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~