美文网首页
关于C++\CLI的迟到的开宗明义的解释1

关于C++\CLI的迟到的开宗明义的解释1

作者: 左图右码 | 来源:发表于2022-04-11 11:27 被阅读0次

在发出几篇C++\CLI接几篇学习记录后,我觉得少了一个前奏,需要开宗明义地对C++\CLI做一个解释。
虽然C++\CLI越来越像dotNet里的二等公民,因为加入了不少key words,被经典C++阵营所嫌弃,又因为学习曲线陡峭,又被CLI阵营冷落,逐渐沦为里胶水语言,没有人正经八百地拿它写完整的应用。在极小而狭窄的混合编程领域,倒是活的挺好。
其实,庸众的选择总是不客观和盲从的。
摘选几段本人翻译而来的阐述观点:

当C++用斜杠符号与CLI结合时,从一开始就很明显,这不会是名人婚姻。世界上最强大的高级编程语言C++被改头换面,以便它可用在可能是世界上最受欢迎的CLI运行时环境上进行软件开发。
C++以前曾经有过语言扩展配,但不是很漂亮。Visual C++ 2005是微软C++编译器实现C++/CLI规范的第一个版本。这意味着C++开发者需要做的三件事:
■ C++可以用来编写运行在.NET上的应用程序。没有必要学习一种全新的语言,或者放弃通过多年的编码建立起来的所有C++知识和经验。
■ C++/CLI让开发人员重用他们的本地C++代码库,省去了重写所有现有代码的痛苦,使其能够运行在.NET框架。
■ C++/CLI被设计为.NET框架中的最低级别语言。对于编写纯托管应用程序,它是您最强大的选择。或者,正如我喜欢说的“C++/CLI实际上让您可以嗅到CLR(Common语言运行时)的味道。”
Visual C++ 2005不是微软第一次尝试提供一个C++编译器,它能够以托管代码为目标。VC++ 2002和VC++ 2003都支持支持C++的托管扩展(称为托管C++或MC ++)的编译。作为一种语法扩展,它不太理想甚至说完全是失败的。
C++开发人员最关心的就是如何着手NET是因为他们害怕放弃现有的本机代码,不得不将所有内容重写为托管代码。这正是C++/CLI的用武之地。您不必放弃当前的本机代码,也不必将所有内容重写为托管代码。这就是C++/CLI的最大优势,即重用现有本机代码的能力。

  • 重用现有的本机代码
    Visual C++ 2005允许你用一个编译开关的轻击来将整个本地代码库编译到MSIL。在实践中,您可能会发现,为了成功编译和构建应用程序,您必须更改一小部分代码。这比放弃所有代码或完全重写代码要好得多。一旦成功编译了CLR的代码,代码就可以访问CLR中的数千个类NET基类库。
    访问整个NET库
    这个NET Framework附带了一个庞大的库,其中包含数千个类,可以简化最常见的开发需求。有一些课程涉及XML、密码学、图形用户界面、数据库技术、操作系统功能、网络、文本处理,以及你能想到的任何东西。一旦您获取了本机应用程序并为CLR编译了它们,就可以使用它们了。NET类直接从您的代码。例如,您可以使用一个常规的基于MFC对话框的应用程序,并使用NET加密类。您不局限于托管库,因为C++/CLI允许您在托管代码和本机代码之间无缝地进行互操作,即进行混合编程。
  • 最强大的互操作语言
    尽管其他语言如C#和VB.NET具有互操作功能,C++/CLI提供了任何CLI语言中最强大、最方便的互操作功能。C++/CLI理解托管类型和本机类型;因此,您通常会使用任何想要的库(无论是本机DLL还是托管程序集),而不必担心托管/本机类型转换。使用C++/CLI中的本机库非常简单,只需包含所需的头文件、与正确的库文件链接,以及像通常那样进行API或类调用。将其与C#或VB进行比较,他们在NET中,在访问本机代码之前,必须复制并粘贴大量的P/Invoke声明。简而言之,对于任何类型的互操作场景,C++/CLI都应该是自动选择的语言。互操作的一个常见用途是从现有的本机应用程序访问新的托管框架,如Windows窗体。(请注意,本书第3部分详细介绍了这项技术。)
  • 利用最新的托管框架
    想象一下,你有一个相当大的MFC应用程序,你的公司想给它一个新的外观和感觉。您最近从另一家公司获得了一个优秀的基于Windows窗体的UI库。以VC++2005为例,为CLR重新编译MFC应用程序,并将UI层更改为使用Windows窗体库,现在您拥有了相同的应用程序,该应用程序在新的闪亮用户界面中使用相同的底层业务逻辑。您不局限于Windows窗体,甚至不局限于UI框架。下一个版本的WINDOWS(称为Windows Vista)将引入一个新的UI框架,称为Windows Presentation Foundation(WPF)。它是一个托管框架,C++/CLI将允许您从现有的本机应用程序访问它。Vista发布时,你的应用就可以使用WPF了。
    请注意,WPF也可用于Windows XP,因此您不局限于使用Vista运行基于WPF的应用程序。
    在Vista出现的另一个强大的管理框架是Windows通信基础框架(Windows Communication Foundation,WCF),顾名思义,它是一个用托管代码编写的强大的通信框架。是的,虽然你知道我要说,你可以从你的Visual C++应用程序访问WCF。虽然本机代码重用和强大的互操作是其最常见的优势,但C++/CLI也是编写托管应用程序最强大的选项。
  • 编写功能强大的托管应用程序
    当Visual C++编译器团队的Brandon Bray说C++/CLI是MSIL之外的最低级别语言时,这就是他原话的意思!C++/CLI比任何其他CLI语言支持更多的MSIL功能;它对MSIL的影响就像过去C对汇编语言的影响一样。C++/CLI是目前唯一支持堆栈语义和确定性销毁、混合类型、托管模板和STL.Net(标准模板库的托管实现)的CLI语言。
    你现在可能有一个自然的问题,那就是为什么微软引入了一种新的语法。为什么它没有继续使用旧的MC++语法?这就是我们接下来要研究的。

未完待续。。。

相关文章

网友评论

      本文标题:关于C++\CLI的迟到的开宗明义的解释1

      本文链接:https://www.haomeiwen.com/subject/iqeisrtx.html