纯代码和可验证代码 (C++/CLI)

对于 .NET 编程,Visual Studio 2017 中的 Visual C++ 支持使用 /clr(公共语言运行时编译)编译器选项创建混合程序集。 “/clr:pure”和“/clr:safe”选项在 Visual Studio 2015 中已弃用,并且在 Visual Studio 2017 中不受支持。 如果需要保护代码的安全或使代码可验证,建议将代码移植到 C#。

混合 (/clr)

混合程序集(使用 /clr 编译的)包含非托管和托管部分,因此它们可以使用 .NET 功能,但仍包含本机代码。 这允许更新应用程序和组件以使用 .NET 功能,而无需重写整个项目。 使用 Visual C++ 以这种方式混合托管代码和本机代码称为 C++ 互操作。 有关详细信息,请参阅混合(本机和托管)程序集本机和 .NET 互操作性

通过 P/Invoke 从托管程序集对本机 DLL 进行的调用将编译,但在运行时可能会失败,具体取决于安全设置。

有一个将传递编译器,但将导致程序集无法验证的编码方案:使用范围解析运算符通过对象实例调用虚拟函数。 例如:MyObj -> A::VirtualFunction();

另请参阅