运行时库的理解

2024-02-03 20:58
文章标签 运行 理解 时库

本文主要是介绍运行时库的理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.什么是运行时库

运行时库(Runtime Library)是程序运行时所需要的库文件.

它把具有语言特性(language feature)的函数放到了库函数中.例如C运行时库中包含了fopen(), strcpy()这些非核心语言的特性.

For example, the C runtime library is a library containing things like fopen() for opening files or strcpy() for copying strings. While the compiler understands the core language (ifwhile and so on, including how to call functions), the non-core-language features are provided as libraries containing functions that can be called.


在Windows下通常为lib或者dll的文件,比如libcmt.lib, msvcrt.lib+msvcrtxx.dll.如果你安装了VS2010,在安装目录下的VC\crt\src下有运行时库(CRT)的源代码,这里既有C的文件(如output.c、stdio.h等),也有C++的文件(如iostream、string)。

2.运行时库的作用

(1)提供C标准库或者C++标准库.

(2)为程序提供启动函数.启动函数主要进行一些初始化操作:比如初始化全局变量,加载用户程序的入口函数

void mainCRTStartup(void)
{int mainret;/*获得WIN32完整的版本信息*/_osver = GetVersion();_winminor = (_osver >> 8) & 0x00FF ;_winmajor = _osver & 0x00FF ;_winver = (_winmajor << 8) + _winminor;_osver = (_osver >> 16) & 0x00FFFF ;_ioinit(); /* initialize lowio *//* 获得命令行信息 */_acmdln = (char *) GetCommandLineA();/* 获得环境信息 */_aenvptr = (char *) __crtGetEnvironmentStringsA();_setargv(); /* 设置命令行参数 */_setenvp(); /* 设置环境参数 */_cinit(); /* C数据初始化:全局变量初始化,就在这里!*/__initenv = _environ;
 mainret = main( __argc, __argv, _environ ); /*调用main函数*/exit( mainret );
}

3.VS运行时库的几种类型

 其中/MD,/MDd(动态库)是主流选择,即程序运行时通过动态链接的方式来加载,这样内存中只需要保留一份库文件.

注意使用运行时库时,Debug模式下使用Debug版本的,Release模式下使用Release版本的.

————————————————

参考链接:

1.https://stackoverflow.com/questions/25598098/runtime-library-vs-dynamic-library

2.https://blog.csdn.net/luoweifu/article/details/49055933

这篇关于运行时库的理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675401

相关文章

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时