c++/cli的用途

两年前曾经在中石油做过一段时间的外包项目。当时client和一些密集计算部分使用了c++/cli 这是我第一次接触这个东西。

好久前曾经体验过 managed c++。可惜这东西的语法给我印象太坏。。用了一堆下划线不说。。连托管对象和一般heap对象都用* 表示。极其混乱。。记得当时有一个网络包是用managed c++写的,看了头大无比。后来只能自己部分实现了一个简易的顶着。

 

c++/cli是个极其复杂的东西。可以说是个怪物。有些佩服ms的人,居然可以把一套.net和c++基本上做到了无缝连接。

 

先说缺点:

 

1:庞大,类型之间的关系不易搞清楚。。特别是.net based generic type和一般的template。如果混用是件需要小心处理的事情。记得当初做地图cache使用template实现了一个policy模式的插件,使用者说没见过...不会用...........

 

2: 编译速度慢...和c#比 非常慢...而且intelli sense经常会无故失效。。导致开发效率实际上不高...

 

3:资料不多。。书的话 印象中只有一本 c++/cli in action。

 

优点:

 

1:无缝连接:可以很方便使用各种native lib,如果嫌麻烦可以直接调用.net的类库。可以写一个 同时给.net & non .net用的dll。当时要写一个hook的东东,里面同时使用了win32 api, boost和一些.net的库。如果使用C#,不免要做一堆p/invoke。p/invoke不好在于交互的粒度太大,是以函数作为一个单位的。对于某些需要做结构上的更细粒度的交互就显得很麻烦。而且最大的毛病是经常搞乱参数的类型。。int* 可以传 IntPtr, 可以传Int32, UInt32。见过好几个人的p/invoke wrapper。居然传入的参数类型都不一样......

 

2: 性能提高。c++/cli支持 stack semantics。可以及时释放managed object而不需要等到finalize。

 

3:内存泄露的减少。对于native c++ 虽然有smart pointer 内存泄露和利用率不高依然是个毛病。如果对于非托管部分的使用维持在一个范围内,那么相对来说产生内存泄露的机会会少些。目前来看.net的垃圾回收 还是不错的。因为c++/cli可以使用托管对象。所以无形中非托管 (unsafe)部分的代码量会减少。 以前我们的使用仅仅局限于api的调用。和一些计算方面。这些相对较易排查。

 

 

对于是否要是用c++/cli。我觉得 首先必须要有人对c++和.net都有些了解。如果没有,最好不要使用。

 

c++/cli的开发效率不高,所以应尽量减少在代码中的比例。

c++/cli快速入门 在此示例中,我们将说明如何创建类和用户定义的类型。要创建托管类,您要做的就是在类定义的前面加上保护修饰符,然后加上“ref”,从而:private:public:MyClass()要创建本机类,您只需按照自己的方式创建即可。现在,您可能想知道C ++ / CLI中的析构函数,如果它们仍然表现相同,答案是肯定的,则析构函数(确定性)的使用方式仍与在C ++中使用的方式相同。但是,在为您Dispose()透明实现接口之后,编译器会将析构函数调用转换为调用。 阅读详情

相关推荐

14、C++/CLI in Action:在线论坛与技术支持

本文介绍了《C++/CLI in Action》一书提供的在线论坛功能,包括如何访问论坛、论坛的帮助类型、行为准则以及具体使用技巧。通过参与论坛的技术讨论和社区活动,读者可以更好地学习和应用C++/CLI技术。

year5的博客 371

《C++/CLI in Action》

C++/CLI in ActionNishant SivakumarApril, 2007 | 416 pages ISBN: 1-932394-81-8DESCRIPTION“... a great resource, an outstanding job, a must-read...”  —Ayman B. Shoukry, VC++ Team, Microsoft Corporat

sleepydog的专栏 1540

C++ CLI In Action(1)

什么是 C++/CLI 个人感觉将其看作是位于静态程序设计和动态程序设计之间的一座桥梁。C++ 既C++ 编程语言编程语言; CLI 即通用语言基础构造( Common Language Infrastructure ),这是一个支持动态组件编程模型的多层架构; 中间的斜线“ / ”,它往往为人们所忽略。其表示对 C++ 和 CLI 的一种绑定( binding ),它正是 C++/CLI 设计的焦点所在 据此,对于“什么是 C++/CLI ”这一问题可能的一种答案便是“它是对静态 C++ 对象模型和动态 CLI 组件模型的一种绑定”。

C++/CLI in Action

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpC++ is the language of choice for thousands of applications and millions of lines of code. With C++/CLI, deve

TopMVP 686

C++-CLI.in.Action

C++-CLI.in.Action 详细介绍c++和CLI的书籍

C++ CLI in Action

C++ CLI in Action!!!!!!!!!

C++,CLI,C#之间交互

<br />转自:<br />      http://www.cppblog.com/mzty/archive/2007/04/16/22064.html<br /> <br />C#界面,C++算法 C#界面,C++核心算法(.NET与C++的交互) 背景: C++以她的普及率,复杂度和高效率为大家所用,C#作为.NET 的代表语言,与C++相比,是完全面向对象的语言,但C#更广为人知是因 为.NET FrameWork提供的强大的库,使C#能够实现快速开发的利器。综合

normallife的专栏 5168

Manning.C++CLI.in.Action.Apr.2007

Manning C++ CLI.in.Action 2007 英文版 英文原版,欢迎下载

C++/CLI的用途

转自:http://dev.21tx.com/2009/04/17/13913.html 作为一个有着正常审美观的人,我简直无法忍受C++/CLI(以及managed c++)的丑陋。不过,近来发现,这个丑东西也还有点用,在把原生开发接口包装成托管开发接口时,比C#的互操作容易的多(互操作看了看,头大呀)。磕磕绊绊几天,终于把一个SDK开发包转换完成了。总结经验如下:   1. 对

shellching的专栏 2833

从Podfile到分享成功:ShareSDK小红书模块集成全流程实战(附视频分享代码)

本文详细介绍了iOS应用如何通过ShareSDK集成小红书分享功能的全流程,包括环境配置、SDK初始化、图片和视频分享实现,以及常见问题排查和性能优化策略。特别针对视频分享这一高频需求场景,提供了完整的代码示例和实战技巧,帮助开发者快速实现社交分享功能。

weixin_42540248的博客 226

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

qq_73523062的博客 2087

c++ gcnew new 区别

C++/CLI中使用gcnew关键字表示在托管堆上分配内存,并且为了与以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下:   1.     gcnew返回的是一个句柄(Handle),而new返回的是实际的内存地址.    2.     gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放

石头的专栏 1141

AI虚拟人物 数字人直播,不用出镜,不用露脸的直播方式(附教程 软件)

我们先来看一组数据,这是我通过蝉妈妈查到的某位虚拟主播的一个带货数据,粉丝还不到 3000 人,每次直播 1 到 4 个小时,30天的总销量达到了1200单,15天,总销售额 2 万,可能相对来说客单价还是比较低,最关键的是才直播了 6 场,如果说他能够一个月直播 20 天,每天花 4个小时去直播,当个副业来做,就可以达到最起码月入 3 万的一个收入水平,我个人觉得是非常的不错的。大家把商品图片放在背景,只要场景设置的不错,场景和产品的关联度高,直播的时候挂上购买链接也会有一定的成交。

. 7万+

VC++2005.net 学习笔记(一)

Lession1        Visual Studio 2005支持两种截然不同但风格相近的C++:它完全支持ISO/INSA标准的C++,同时它也支持微软开发的被叫做C++/CLI的C++,它现在是一个PCMA标准。C++/CLI是专门用来开发.Net FrameWork的。CLR的英文全称为:Common Language RuntimeCLI 的英文全称为:Common La

jia_xiaoxin的专栏 890

弹窗提示报错: F:\c\CFX5\bin\Debug\net9.0-windows10.0.26100.0\CFX5.dll 面向无法动态枚举工具箱项目的平台...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 944

SAP ABAP CDS View 里的日期函数

摘要:本文系统介绍了ABAP CDS日期函数在企业级应用中的关键作用,包括账龄计算、合同续期等业务场景。重点解析了DATS_IS_VALID、DATS_DAYS_BETWEEN等核心函数的语义和使用边界,特别强调on_error四种异常处理策略的选择逻辑。针对系统日期获取,对比了经典CDS的参数注入和View Entity会话变量两种方式。文章还提供了完整可运行的示例代码(包含CDS视图和ABAP程序),帮助开发者快速验证不同版本下的函数行为差异,确保在实际项目中正确应用这些日期处理函数。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 378

Visual C++里ATL.MFC.CLR区别

MFC、ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用。当然关于C++开发的库不止这3个,不过这3个是微软推荐。从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR. WIN32 winAPI MFC MFC类库 CLR .net库1. WIN32常规就是不用MFC,使用API函数编的程序。2. MFC库有很多年的历史了,MFC是基于W

小安屋 1361

基于R语言的PLS算法实现解读

我们使用"pls"包来执行PLS回归,并提供了相应的源代码。在本文中,我们将详细解读基于R语言的PLS算法的实现过程,并提供相应的源代码。PLS算法的实现可以借助R语言中的"pls"包。该包提供了丰富的函数和工具,用于执行PLS回归、PLS-DA(PLS-Discriminant Analysis)和其他相关任务。除了执行PLS回归,"pls"包还提供了其他功能,例如PLS-DA(用于分类问题)和PLS变量选择等。上述代码将基于输入的X值,使用训练好的PLS模型进行预测,并返回预测结果。

TechWhizKid的博客 1043

ATL CLR MFC Win32 常规 的区别

ATL用于编写COM程序,CLR是.NET的公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出的程序,WIN32常规就是不用 MFC,使用API函数编的程序。 MFC、ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用。当然关于C++开发的库不止这3个,不过这3个是微 软推荐。从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR. W

Dean Feng 496

智算中心建设项目初步设计方案

本项目面向区级政府、智算中心及文旅从业者,聚焦某区智算中心一期建设,响应数字经济与智慧城市建设政策,推动文旅产业升级。遵循统筹规划、数据驱动原则,目标打造智慧文旅样板。建设内容涵盖云网数据底座(以租代建)、数据中台(全生命周期管理)、智慧文旅平台(含“一机游”电商)及气象监测等配套,采用前后端架构与低代码开发,强化三级等保与纵深防御,实现安全可控。方案融合多类资源目录,提供从设计到运营的完整技术支撑,助力区域智算与文旅深度融合。

cdfunlove的博客 111

AI + 药物临床试验研发赛道

研究日期:2026-07-09 | 研究主题:AI + 药物临床试验研发赛道 | 聚焦岗位:Agent 平台架构师 / AI 工程架构师。

AI天才研究院 144

MFC,ATL,CLR简介

MFC、ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用。当然关于 C++ 开发的库不止这3个,不过这3个是微软推荐。从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR. WIN32 winAPI MFC MFC类库 CLR .net库 1. WIN32常规就是不用MFC,使用API函数编的程序。 2. MFC库有很多年的历史了,MF...

weixin_30537391的博客 239

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VS2008中 ATL CLR MFC Win32 区别

ATL用于编写COM程序,CLR是.NET的公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出的程序,WIN32常规就是不用MFC,使用API函数编的程序。 MFC、ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用。当然关于C++开发的库不止这3个,不过这3个是微软推荐。从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR. WIN...

weixin_33868027的博客 96

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C++/CLI简介(什么是C++/CLI) -------C++/CLI 编程系列一

要知道C++/CLI是什么,首先知道什么是CLI。 一、CLI简介 CLI:(Common Language Infrastructure,通用语言框架)提供了一套可执行代码和它所运行需要的虚拟执行环境的规范。更通俗的我们可以说它是一个虚拟平台,是操作系统和应用程序间的一层抽象。微软的.NET的基础CLR(Common Language Runtime,通用语言运行时)就是CLI的

亿言 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C++/CLI

C++/CLI C++/CLI(CLI:Common Language Infrastructure)是一门用来代替C++托管扩展(下文使用MC++指代)新的语言规范。重新简化了C++托管扩展的语法,提供了更好的代码可读性。和微软.NET的其他语言一样,微软向ECMA提交了C++/CLI的标准。C++/CLI

mathew的专栏 2969

C#调用C++/CLI(托管C++)

C++/CLI(Common Language Infrastructure,通用语言框架)可以简单的认为就是.NET运行的托管C++。 C++/CLI 数组 C++/CLI数组只能用array&amp;lt;&amp;gt;声明 C++/CLI数组只能是句柄类型 声明方式如下: //存储值类型数据的数组 array&amp;lt;double&amp;gt;^ p; //存储句柄类型(类只能是句柄)数据的数组 array&amp;...

hustlei的专栏 3933
上一篇: sqlite and default_synchronous
下一篇: stackless and mathplotlib
mathgl
博客等级 码龄19年 1粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值