Compiler Error C2346

'function' cannot be compiled as native: reason

The compiler was unable to compile a function to MSIL.

For more information, see managed, unmanaged and /clr (Common Language Runtime Compilation).

To correct this error

  1. Remove the code in the function that cannot be compiled to MSIL.

  2. Either do not compile the module with /clr, or mark the function as unmanaged with the unmanaged pragma.

Example

The following sample generates C2346.

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

void main()
{
   S s;
}