Our Articles

Porting C# Code to C++: Smart Pointers

When developing a code translator from C# to Java, there are no issues with deleting unused objects: Java provides a garbage collection mechanism that is sufficiently similar to the one in C#, and the translated code using classes simply compiles and works. C++ is a different story. Clearly, mapping references to raw pointers will not yield the desired results, as such translated code will not delete anything. Meanwhile, C# developers, accustomed to working in a GC environment, will continue writing code that creates many temporary objects.
link

20 February 2025

Porting C# Code to C++: Memory Management Models

Our framework, CodePorting.Translator Cs2Cpp, enables the release of libraries developed for the .NET platform in C++. In this article, we will discuss how we managed to reconcile the memory models of these two languages and ensure the correct operation of the translated code in an unmanaged environment.
link

28 December 2024

C# to C++ Translation Challenges and How We Plan to Enhance the Code Translator

Creating an efficient code translator between languages such as C# and C++ is a complex task. During the development of the CodePorting.Translator Cs2Cpp tool, we encountered numerous challenges related to the differences in syntax, semantics, and programming paradigms of these two languages. This article will discuss the key difficulties we faced and possible ways to overcome them.
link

22 November 2024

Rules for Translating Code from C# to C++: Object Creation and Method Calls

Sometimes the behavior of code written in C# and C++ can differ. Let's take a closer look at how CodePorting.Translator Cs2Cpp handles such differences and ensures the correctness of the code translation. We will also learn how the conversion of unit tests is carried out.
link

27 March 2024

Rules for Translating Code from C# to C++: Class Members and Control Structures

In this article, we will explore how our translator converts class members, variables, fields, operators, and C# control structures. We will also touch on the use of the translator support library for the correct conversion of .NET Framework types into C++.
link

22 March 2024

Rules for Translating Code from C# to C++: Basics

Let's discuss how our translator converts syntactic constructs from the C# language to C++. We'll explore the translation specifics and the limitations that arise during this process.
link

11 March 2024

C# to C++ Translator: Operations on the Source Code

At first glance, it may seem that the translator has only one way of using it: by feeding it C# code, we expect to get equivalent C++ code as output. Indeed, this way is the most common, but far from the only one. This article describes other modes provided by the code translation framework and related utilities.
link

15 February 2024

From C# to C++: How We Have Automated Project Conversion – Part 2

The design and development of C# to C++ code translator was performed solely by CodePorting. It required many investigations, applying multiple approaches, and tests, differing by memory model and other aspects. In the end, two solutions were chosen. One of them is currently being used for C++ releases of Aspose products.
link

26 January 2024

From C# to C++: How We Have Automated Project Conversion – Part 1

Customers value Aspose products, that allow manipulating protocols and files of popular formats. Most of them were initially developed for .NET. At the same time, business applications for file formats, run in different environments. This article will describe how we have succeeded in setting up the releases of Aspose products for C++, by building a framework for code translation from C#. Keeping the functionality of .NET versions for these products was technically challenging.
link

18 December 2023