C++/CLI 本机还是托管?

C++/CLI Native or Managed?

我有一个 C# 项目,我需要一个 C++ 本机代码来与 C# 代码交互。为此,我正在使用 C++/CLI class 包装器,它将调用 C++ class.

据我了解,如果 C++ class 的声明后面有一个 ref,它将被编译为托管代码。如果没有,它将被编译为本机代码。

这个假设是否正确,或者我是否需要向编译器提供进一步的说明以确保我的 class 将是本机代码?

As far as I understand, if a C++ class has a ref behind it's declaration, it's going to be compiled as managed code.

正确。没有 /clr.

无法编译 ref class 类型

And if it doesn't have it, it will be compiled as native code.

不正确。如果 /clr 有效(例如未被 #pragma unmanaged 禁用),则编译器仅生成 MSIL(Microsoft 中间语言,.NET 的字节码)。