Compiler Error C2346


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at 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.

The following sample generates C2346.

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