链接、装载与库[11]运行库

1.FILE结构

struct _iobuf {
    
    
  char *_ptr;
  int _cnt;
  char *_base;
  int _flag; 
  int _file;  //通过_file访问内部文件句柄表的数据
  int _charbuf;
  int _bufsize;
  char *_tmpfname;
};
typedef struct _iobuf FILE;

2.C语言运行库CRT

  • 任何一个C程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能够正常运行。这样的一个代码集合称为运行时库 (Runtime Library) ,而C语言的运行库,称为C运行库(CRT)
  • 一个C语言运行库大致包含了如下功能:
  • 1)启动与退出:包含入口函数及入口函数所依赖的其他函数等;
  • 2)标准函数:由C语言标准规定的C语言标准库所拥有的函数实现;
  • 3)I/O:I/O功能的封装和实现;
  • 4):堆的封装和实现;
  • 5)语言实现:语言中一些特殊功能的实现;
  • 6)调试:实现调试功能的代码

3.为什么用Visual C++ 2005/2008 编译的程序无法在别人的机器上运行?

  • 因为Visual C++ 2005/2008 编译的程序使用了manifest机制,这些程序必须依赖于相对应版本的运行库。
  • 解决办法:1)不依赖于CRT的DLL,使用静态链接;2)将相应版本的运行库的程序一起发布给最终用户。

猜你喜欢

转载自blog.csdn.net/qq_43118572/article/details/113881434