繁体   English   中英

C++ CLR win32 还是其他?

[英]C++ CLR win32 or others?

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

此外,我发现在其他一些 C# 程序中调用了一些 C++ 库 cab。 怎么会这样?

由于C++被认为比C#更快,因为它不需要平台来运行它,但是,如果在CLR中使用C++,它会变得更慢吗?

The question is: I wanna make a C++ library that call the windows command and return the output, and this library could be called in other C# program. 有可能这样做吗? 如果是,C++ 库是否需要.Net 框架并且运行速度较慢?

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

There's no difference between C++ and using MFC, MFC is a class framework written in C++, just like any other code you might write in 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++/CLI,您只需将程序集包含在您的 C# 项目中,然后像普通的 C# 代码一样调用函数。 If you write it using non-CLI C++ (Win32 and MFC are not kinds of C++, they're just libraries...) then you'll have to use P/Invoke from C# to call functions written in C++.

是的,在某些方面,C++/CLI 可能比普通的 C++ 慢一点。 但不是很多。 CLR 相当快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM