编译器错误 C2346

'function' 无法编译为原生:原因

编译器无法将函数编译为 MSIL。

有关详细信息,请参阅托管、非托管/clr(公共语言运行时编译)

更正此错误

  1. 移除函数中无法编译为 MSIL 的代码。

  2. 要么不使用 /clr 编译模块,要么使用非托管 pragma 将函数标记为非托管。

示例

以下示例生成 C2346。

// C2346.cpp
// processor: x86
// compile with: /clr
// C2346 expected
struct S
{
   S()
   {
      { __asm { nop } }
   }
   virtual __clrcall ~S() { }
};

int main()
{
   S s;
}