【发布时间】:2017-07-16 21:23:27
【问题描述】:
我无法理解托管 C++ 如何工作和编译。
在 .NET Framework 中,您可以使用 C#/VB/F#/..etc 开发代码。并且所有这些语言都将被编译为与 Java 字节码类似的相同通用中间语言 (CIL)。从理论上讲,CIL 可以安装在任何平台上(Mono 使其实用)。在 Windows 上,CLR 将 CIL 编译为本机代码 Just-In-Time (JIT),一切都运行顺利,一切顺利。
现在,托管 C++ 是如何编译的?它是否编译为 CIL 代码并等待 CLR 使用 JIT 运行它?我认为不会,因为托管 C++ 可以使用标准 C++ 代码(未编译为 CIL)。此外,它如何能够使用 .NET 程序集(它们是 CIL)?
如果有任何帮助,我将不胜感激。 谢谢
编辑:
我看过这个answer。它指出,在 C++/CLI 中,托管代码被编译为 MSIL,您可以选择将非托管代码编译为本机代码或 MSIL。因此,我现在了解如何调用 .NET 程序集。
无论如何,如果将非托管代码编译为本机代码,我仍然不明白 C++ 非托管代码如何与托管代码在同一个程序集中运行。有什么想法吗?
【问题讨论】: