2012-04-13 112 views
0

在阅读了一些关于托管代码和非托管代码的内容后,我意识到托管编译器会生成IL,任何机器都可以理解。我们所需要做的只是将程序集部署在任何其他机器上,而CLR有助于正确运行它。VC++属于托管或非托管类别?

但是,我还看到VC++不支持CLR及其非托管代码。但是我们可以在任何机器上运行VC++二进制文件而不做任何修改它不需要与我们构建exe的机器具有相同的配置。

请澄清一下,非托管代码和托管代码是什么?如果非托管代码不应该在任何其他机器上运行,并且配置不同,例如不同的主板,芯片组等等...... VC++二进制文件如何在那里运行?

回答

4

你不能在没有任何修改的任何机器上运行VC++二进制文件。你只能在Windows机器上运行它,甚至不能运行它。例如,当前的VC++ 64位可执行文件不会在较早的Win 95下运行。

托管代码是转换为IL的代码,由CLR在运行时解释。非托管代码的代码转换为原生机器码,它由CPU直接运行。

+0

要运行.net exe,我们需要.net框架才能在其他机器上运行。它不是VC++ MFC EXE的情况吗? – Naruto 2012-04-13 08:50:27

+0

@LLL是的,但“其他机器”!=“其他平台”。例如,您不能在UNIX计算机上运行Windows EXE(至少不是没有模拟器)。您不需要具有相同的配置,但您确实需要具有相同的平台(即:相同的操作系统和体系结构)。 – littleadv 2012-04-13 08:51:57

+0

我们可以在unix下运行.net exe吗?如果是这样的话,CLR将默认安装在unix中, – Naruto 2012-04-13 08:55:47

0

Visual C++是不是语言它是微软提供的IDE,它带有一个编译器和一组库。您可以使用此编译器生成托管代码或非托管代码。在非托管代码的情况下,它将生成Windows可以识别的格式的exe(或dll或其他二进制文件)。操作系统(在这种情况下,Windows)会抽象所有其他细节,如处理器,主板等。

+1

实际上 - Visual Studio是IDE时,Visual C++是编译器和运行时,C++是语言。 – 2012-04-13 08:53:16

1

正常情况下,VC++生成非托管二进制文件。它们可以在所有的Windows电脑上运行(可能使用C++ - redist包)。

要用C++创建托管(.NET)应用程序,您需要使用C++/CLI

在这种情况下,托管代码是.NET,非托管代码是本地二进制文件。

要运行非托管二进制文件,您需要计算机上的相关库,以运行需要.NET Framework的托管代码。