c# - C++ CLR win32 或其他?

标签 c# c++ winapi clr

我正在使用 C++,发现有不同种类的 C++,例如 CLR、Win32、MFC......

此外,我发现某些 C++ 库可以在其他一些 C# 程序中调用。怎么可能?

既然人们认为 C++ 比 C# 快,因为它不需要平台来运行它,但是,如果在 CLR 中使用 C++,它会因为需要 .Net 框架而变得更慢吗?

问题是: 我想制作一个调用 windows 命令并返回输出的 C++ 库,并且可以在其他 C# 程序中调用该库。有可能这样做吗?如果是,C++ 库是否需要 .Net 框架并且运行速度较慢?

最佳答案

你的困惑是可以理解的,但你的理解是有缺陷的。

C++ 和使用 MFC 之间没有区别,MFC 是用 C++ 编写的类框架,就像您可能用 C++ 编写的任何其他代码一样。它只是 Microsoft 随其产品提供的一个框架。

C++/CLI(不是 CLR)并不是真正的 C++。它是一种类似于 C++ 的语言,可编译为 .net IL 字节码。它有很多限制,并且具有 C# 和 VB.NET 以及其他 .NET 语言所具有的所有相同限制。它与 C++ 非常相似,但又不完全相同。

C++/CLI 应用程序编译为 .net IL 字节码,因此它们与 C# 应用程序没有什么不同。事实上,几乎所有基于 .net 的语言都会编译成相同的字节码,并使用相同的框架。

C# 或 C++/CLI 程序是否“更慢”尚不明确。太多的 C++ 狂热者延续了托管代码缓慢的神话。它不是。有些事情很慢,比如第一次运行它(它必须按需编译代码),但是因为.NET Jitter(即时编译器)可以为它运行的平台优化代码,所以它来制作代码表现更好。

当然托管代码也有垃圾回收,这很方便,但在某些情况下可能会导致性能问题。但是,这不是所有情况,甚至不是大多数情况。

关于c# - C++ CLR win32 或其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061509/

相关文章:

c++ - 什么是XcvPort(在OpenPrinter函数中使用)

c++ - C/C++ 中的 test_bit 宏

在 Windows 中从纯 C 创建一个唯一的临时目录

c# - SignalR:生成的代理与动态创建的集线器文件

c# - 如何将字符串数组从 jQuery 传递到 Controller

c++ - 当显式调用构造函数时,是否构造了初始化程序和成员变量?

c++ - 字符数组中的线性搜索——C++ (Visual Studio 2005)

c# - 获取当前的笔记本电脑盖子状态

c# - 如何在 Azure 中以编程方式接收电子邮件?

c# - 为类中的类的属性赋值