• Saves Valuable Time
  • Trusted Accuracy for 12 Years
  • 15-Day Money-Back Guarantee

C# to C++ Converter

C# to C++ Converter produces great C++ code, saving you hours of painstaking work and valuable time.

Try the Free Edition

  • Free
  • High-quality conversion
  • Convert projects up to 1000 lines
  • Convert snippets up to 100 lines

Purchase the Premium Edition

  • $129 US (15-day money-back guarantee)
  • High-quality conversion
  • Unlimited project conversion length
  • Unlimited snippet conversion length

10 Second Overview

*Scroll right to see C# to C++ Converter in action!

Key Benefits

The Most Comprehensive Converter

Note: "unsafe" code blocks and types are not converted.


You have the option of producing either native C++ code or C++/CLI code. The conversion defaults to some aspects of modern C++, but you have options to prevent this.

You can select C# projects or folders to convert.  All ".cs" files within that project or folder will be converted and written as either combined declaration/implementation header files or as traditionally separated .h/.cpp files to the directory you specify.  However, C# to C++ Converter does not construct the new C++ project file (e.g., the .vcxproj file in Visual Studio).  This is due to the lack of one-to-one correspondence between C# project types and formats and C++ project types and formats.

Yes - try out our Free Edition to see the conversion details.  For native C++ output, we substitute a wrapper type for the event delegate type. This type maintains collections of 'listeners' with methods to add or remove listeners. For C++/CLI output, events are directly converted to C++/CLI events.

Yes - try out our Free Edition to see the conversion details.  For native C++ output, we convert C# delegates to function pointers using std::function. For C++/CLI output, delegates are directly converted to C++/CLI delegates.

Your existing code is left completely intact.  The new C++ files are written to the new location that you specify.

No.  Our converter accuracy is the highest in the industry, but there will be some minor tweaks required in all but the most trivial conversions.  Read the rest of the FAQ to get an idea of a few things that are not converted. It is critical to try some of your own code when comparing C# to C++ converters since it is very easy to create a converter that does very well on a specific sample set.  The most important criterion is how well the converter does on your own code, and this is where C# to C++ Converter will clearly show its superiority.

  • "unsafe" code blocks and types are not converted. 
  • Same class constructor calls are not supported in C++ prior to C++11.  If you don't select the option to preserve same-class constructor chaining, these cases are marked with "ToDo" comments.
  • For native C++ output, only some of the .NET Framework references are converted to native C++ equivalents. You will need to adjust most of these references yourself. The converter offers options to use your own custom replacements.
  • For native C++ output, C# to C++ Converter cannot ensure proper deallocation of pointer variables. In some cases, a call to the delete operator is made, but in general correct memory deallocation is not included in the conversion. However, the converter contains options for converting to smart pointers.
  • For native C++ output, C# events of delegate types that are not defined in the converted code are not converted.
  • For native C++ output, attributes are commented out since there is no direct native C++ equivalent to .NET attributes.
  • There will be occasional qualifier symbol adjustments required.  For example, it is possible that C# to C++ Converter fails to determine whether a particular C# dot operator should be replaced by a C++ arrow, double colon, or dot.  If type analysis fails to determine the equivalent, heuristics are used to determine the most probable equivalent.
  • For native C++ output, there is no acceptable equivalent to an exception 'finally' clause.
  • Since C# to C++ Converter does not map to a particular C++ project type, the C# 'Main' method is left in it's original location and converted literally.  Depending on the C++ project type, you will need to adjust the location and structure of the main method.
  • Universal Windows Platform apps (formerly 'Metro', 'WinRT', or 'Windows Store' apps) are converted, but the converter cannot discover type information which is inside .winmd files. There are a couple of possible work-arounds, but they will not work consistently for all users. This means that there will be more manual adjustments required for Universal app conversions, until Microsoft provides a coherent approach to reading .winmd files from desktop applications, such as our converters.

Additional Resources

C++ and C# equivalents chart

C# to C++ conversion tips

Copyright © 1997 – 2017 Tangible Software Solutions Inc.