0

在阅读了一些关于托管和非托管代码的资料后,我意识到在托管编译器中会生成任何机器都可以理解的 IL。我们需要做的只是将程序集部署在任何其他机器上,CLR 会帮助它正确运行。

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

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

4

3 回答 3

4

未经任何修改,您无法在任何机器上运行 VC++ 二进制文件。您只能在 Windows 机器上运行它,甚至不能在任何机器上运行它。例如,当前的 VC++ 64 位可执行文件将无法在较旧的 Win 95 下运行。

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

于 2012-04-13T08:37:07.853 回答
1

通常 VC++ 会生成非托管二进制文件。它们可以在所有 Windows 计算机上运行(可能使用 c++-redist 包)。

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

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

要运行非托管二进制文件,您需要机器上的依赖库,要运行托管代码,您需要 .NET Framework。

于 2012-04-13T08:39:51.737 回答
0

Visual C++不是一种语言,它是来自微软的 IDE,它带有一个编译器和一组库。您可以使用此编译器生成托管或非托管代码。如果是非托管代码,它将生成 Windows 可以理解的格式的 exe(或 dll 或其他二进制文件)。操作系统(在本例中为 Windows)从您那里抽象出所有其他细节,例如处理器、主板等。

于 2012-04-13T08:39:44.387 回答