csPorter for C++

csPorter for C++

Port C# Projects to C++

Convert any enterprise-level C# library or application to its native C++ equivalent with as little manual work as possible.

  Download Free Trial

csPorter for C++ is a comprehensive porter application that can port C# projects to native C++. It can be used to set up automated porting of continuously improving C# code to C++ in order to release the same version of the software for both languages without changing the APIs or code documentation.  It can also help in delivering C# applications and libraries to platforms where .NET support is either absent or is problematic.

csPorter for C++ is a source code to source code porter app, allowing the reproduction of internal classes and routines in the same way as they are implemented in the original C# code. Moreover, after porting the C# project to C++, you can build it for any of the supported target platforms while using the csPorter for C++ itself.

External Dependencies

Substitute the manually written code as a replacement for the dependency which is not available for porting.

API Preservation

The language-specific constructs used in the C# code are translated into the best-matched C++ equivalents.

Memory Control

Control weak or shared pointers in the ported code to destroy unused objects and to break loop references.


Get Complete Porting Control

The task of translating C# code to C++ is complex as there could be many ways to port language specific constructs. In order to provide full control over the porting process, csPorter for C++ offers porter configurations and attributes. Configuration files follow the rich XML syntax to define the project-wide rules whereas the attributes follow usual C# attribute notion, and can be placed in C# code to mark the constructs that must be translated in a special way.

Don't Worry About the Unmanaged Code Anymore

In C#, allocated objects are collected by Garbage Collector when there is no further need for them whereas C++ code is unmanaged. In order to perform garbage collection in the ported code, all objects are wrapped into smart pointers (intrusive) which count the number of active references and deallocate memory once the object has no active references left. 

More Accurate Type System Reproduction

csPorter for C++ reproduces original C# type system in the converted C++ code, that is; csPorter for C++ uses its own analogs of original .NET types rather than closest STL substitutes. This allows using the types in the same way as used in the original code by calling specific methods absent in the STL substitutes.

No Need to Rewrite the Unit Tests

csPorter for C++ is able to port unit tests written with the help of NUnit & XUnit frameworks to C++ language, allowing to execute the same tests on the ported code. Simply put, if the original code is covered with the unit tests, the translated code is also covered.


Support & Learning Resources