目录
什么是c++/cli?
什么是托管代码?什么是非托管代码?
(资料图片仅供参考)
托管代码
非托管代码
两者区别
c++/cli有什么用?
什么是c++/cli?
C++/CLI(CLI: Common Language Infrastructure)在计算机语言中是一门由微软设计,用来代替C++托管扩展(Managed C++,下文使用MC++指代)的语言。这门语言在兼容原有的C++标准的同时,重新简化了托管代码扩展的语法,提供了更好的代码可读性。
C++/CLI是一门独立的语言(比如新的关键字),而不是像C++托管扩展一样是C++的超集。(C++托管扩展有一些不标准的关键字如__gc和__value)。所以,C++/CLI对于这些语法有较大的改变,尤其是去除了一些意义不明确的关键字,增加了一些对.NET的特性的语言级别的支持。
什么是托管代码?什么是非托管代码?
托管代码
托管代码是一microsoft的中间语言,他主要的作用是在.NET FRAMEWORK的CLR执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段: 1.源代码编译为托管代码,(所以源代码可以有很多种,如VB,C#,J#) 2.托管代码编译为microsoft的平台专用语言。
编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。中间语言被封装在一个叫程序集(assembly)的文件中,程序集中包含了描述你所创建的类,方法和属性(例如安全需求)的所有元数据。你可以拷贝这个程序集到另一台服务器上部署它。
托管代码在公共语言运行库(CLR)中运行。这个运行库给你的运行代码提供各种各样的服务,通常来说,他会加载和验证程序集,以此来保证中间语言的正确性。当某些方法被调用的时候,运行库把具体的方法编译成适合本地计算机运行的机械码,然后会把编译好的机械码缓存起来,以备下次调用。(这就是即时编译)随着程序集的运行,运行库会持续地提供各种服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。
Visual Basic .NET和C#只能产生托管代码。如果你用这类语言写程序,那么所产生的代码就是托管代码。如果你愿意,Visual C++ .NET可以生成托管代码。当你创建一个项目的时候,选择名字是以.Managed开头的项目类型。例如.Managed C++ application。
非托管代码
非托管代码就是在Visual Studio .NET 2002发布之前所创建的代码。例如Visual Basic 6, Visual C++ 6, 最糟糕的是,连那些依然残存在你的硬盘中、拥有超过15年历史的陈旧C编译器所产生的代码都是非托管代码。托管代码直接编译成目标计算机的机械码,这些代码只能运行在编译出它们的计算机上,或者是其它相同处理器或者几乎一样处理器的计算机上。非托管代码不能享受一些运行库所提供的服务,例如安全和内存管理等。如果非托管代码需要进行内存管理等服务,就必须显式地调用操作系统的接口,通常来说,它们会调用Windows SDK所提供的API来实现。就最近的情况来看,非托管程序会通过COM接口来获取操作系统服务。
跟Visual Studio平台的其他编程语言不一样,Visual C++可以创建非托管程序。当你创建一个项目,并且选择名字以M FC,ATL或者Win32开头的项目类型,那么这个项目所产生的就是非托管程序。
两者区别
1、托管代码是一种中间语言,运行在CLR上;
非托管代码被编译为机器码,运行在机器上。
2、托管代码独立于平台和语言,能更好的实现不同语言平台之间的兼容;
非托管代码依赖于平台和语言。
3、托管代码可享受CLR提供的服务(如安全检测、垃圾回收等),不需要自己完成这些操作;
非托管代码需要自己提供安全检测、垃圾回收等操作。
托管代码就意味着托管数据?答案是否定的。
对于Visual Basic和C#来说,生活是简单的,因为你没有其它选择。当你在那些语言里面声明一个类,那么这个类的实例会在托管堆中被创建,垃圾收集器(GC)会帮我们管理这些对象的回收。但是在Visual C++中,你有另一个选择。即使你正创建一个托管程序,你可以决定哪些类是托管类型,哪些类是非托管类型的。
c++/cli有什么用?
总之就一句话:使托管代码调用非托管代码(c#调用c++的dll)。
春节长假期间,山西焦煤深入贯彻党的二十大关于加强能源安全供应能力建设的精神,严格落实省委、省政府关于煤炭增产保供各项决策部署,坚更多
2023-01-30 10:58:51春节期间,国家能源集团新疆能源有限责任公司日生产煤炭约24万吨,有力保障疆内外供暖、电力等重点企业的煤炭供应。图为国家能源集团新疆更多
2023-01-30 10:15:33根据商务部重要生产资料监测系统数据显示,2022年12月份,福建省监测样本企业的煤炭市场价格平均为162917元吨,环比上涨02%。其中无烟煤市更多
2023-01-30 09:57:40据商务部重要生产资料市场监测系统显示,上周(1月9日-15日)四川省煤炭均价为98709元吨,环比下降16%。其中,动力煤、无烟煤价格分别为105更多
2023-01-30 09:53:16据商务部重要生产资料市场监测系统数据显示:(1月14日-1月20日),从监测品种样本数据来看煤炭平均价格为84466元吨,与前一周比(下称环更多
2023-01-30 09:55:49假期市场情况综述 产地方面,假日及节后归来首日呈现供需两弱的局面,价格保持平稳运行。主流大矿多短休为主,维持相对平稳生产,中小更多
2023-01-30 09:58:48从中国铁路太原局了解到,今年以来,中国铁路太原局充分发挥大秦铁路能源通道作用,优先保障电煤运输,提高电煤装车比重,1月份以来(截至更多
2023-01-29 12:18:01据商务部业务系统统一平台洛阳市重要生产资料监测系统数据显示,上周(1月7日-1月13日)洛阳市煤炭(烟煤)平均零售价为7615元吨,环比上更多
2023-01-29 10:07:02据山西省商务厅生产资料市场监测数据显示:(1月9日-15日)山西省煤炭均价13109元吨,环比上涨09%。其中,无烟煤2号均价1648元吨,环比上更多
2023-01-29 10:11:23监测系统数据显示:12月份山西煤炭价格以涨为主。煤炭平均价格为130475元吨,环比上涨14%。其中:无烟煤2号洗选块煤平均价格为16156元吨,更多
2023-01-29 10:04:11