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 的字节码)。
我有一个 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 的字节码)。