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
Your existing code is left completely intact. The new
C# files are written to the new location that you specify.
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
C, C++, C++11, C++14, C++17, and C++/CLI.
C++ to C# Converter converts function pointer typedefs to delegates.
C++ to C# Converter does not convert MFC or ATL resources.
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.
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.
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