C++ CLR win32还是其他?

use*_*434 0 c# c++ clr winapi

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

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

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

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

Eri*_*sch 5

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

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(只是及时编译器)可以优化它运行的平台的代码,所以它来了代码表现更好.

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