C++ CLR win32 or others?

本文关键字:others or win32 CLR C++ | 更新日期: 2023-09-27 18:05:48

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

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

既然大家都认为c++比c#快,因为它不需要平台来运行,但是,如果在CLR中使用c++,它会因为需要。net框架而变慢吗?

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

C++ CLR win32 or others?

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

c++和使用MFC没有区别,MFC是一个用c++编写的类框架,就像你用c++编写的任何其他代码一样。这只是微软为他们的产品提供的一个框架。

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#代码一样调用函数。如果你使用非cli c++ (Win32和MFC不是c++,它们只是库……),那么你必须使用c#中的P/Invoke来调用用c++编写的函数。

是的,c++/CLI在某些方面可能比普通的c++慢一点。但差距不大。CLR非常快。