Extremely responsive, personalized customer support
Easy to use
Produces helpful notes, warnings, and 'to do' comments
Excellent learning tool for those new to C# from C++ backgrounds
The Most Comprehensive Converter
Converts all versions of C/C++ code: C, C++, C++11, C++14, C++17, and C++/CLI
Numerous conversion and formatting options
Handles #define, #include, typedef, default parameters, arrays, and more
Excellent conversion of function pointers from C++ to C#
Allows custom replacement of library functions to instance or static methods
Allows custom replacement of strings in the final converted code
Accurate even with poorly formatted C and C++ code
Q: Are the original C++ files altered in any way?
Your existing code is left completely intact. The new
C# files are written to the new location that you specify.
Q: What is the conversion accuracy?
Our accuracy is the highest in the industry, but there will be
significant adjustments required for all but the most trivial
conversions. C++ code is much more complex than C# code,
so there are no direct equivalents for many aspects of C++.
Read the rest of the FAQ to get an idea of a few things that are
not converted. C++ to C# Converter is intended to reduce
the amount of work you'll have to do to
convert code to C#, but it is just the first step. Code
that is heavily dependent on pointer manipulation is better left
Q: What type of code can be converted?
C, C++, C++11, C++14, C++17, and C++/CLI.
Q: What about function pointers?
C++ to C# Converter converts function pointer typedefs to delegates.
Q: What about MFC and ATL resources?
C++ to C# Converter does not convert MFC or ATL resources.
Q: What about STL Containers?
C++ to C# Converter converts most references to std::vector, std::map, std::set, std::list, std::queue,
and std::stack. A few methods of these containers that have no equivalent are not converted.
Q: What are the most common adjustments necessary after conversion?
Most C/C++ library function calls are not converted. However, we do
convert a subset of the C-based string, keyboard I/O, math, and utility function calls, and some of
the C++ keyboard I/O methods, STL-based string class methods,
and STL containers (std::vector, std::map, std::set, std::list, std::queue, and std::stack).
Some pointer and address manipulation may remain in the converted code.
Multiple inheritance is not converted since it is not available in C#.
C++ templates are converted to, but are only
roughly equivalent to, C# generics. These may require further attention.
Template metaprogramming has no good equivalent in C#.
Bit-by-bit copying of objects via the
assignment operator is not the default in C#. We attempt
to detect these cases and convert the assignment to
a call to either the copy constructor (if used in a variable
initialization) or the converted assignment operator overload (which is
converted to a 'CopyFrom' method) and also provide a 'Warning' comment.
C# does not allow embedded assembly instructions. These are marked with a comment.
Types cannot be declared within methods in C#.
These are marked with a comment.
There is no equivalent to friend functions or
friend classes in C#. These are marked with a comment.
Unions and bit fields have no elegant equivalent in C#. Unions are converted to structs and marked with a comment.
Simple unions are converted using the StructLayout and FieldOffset attributes.
A few operators that can be overloaded in C++ cannot be overloaded in C#. These are marked with a