Перевод кода C# в C++

Преобразуйте вашу библиотеку C# корпоративного уровня или консольное приложение в C++ эквивалент с полной поддержкой .NET Framework. Полученный C++ проект совместим с Linux, MacOS и Windows. Переводите миллионы строк кода одновременно с минимальными ручными усилиями.
Заказать услугу

CodePorting.Translator Cs2Cpp — приложение-транспилятор

Позволяет наладить автоматическую конвертацию переодически изменяемого C# кода в код C++, для выпуска одной и той же версии программного обеспечения для обоих языков, без изменения API или документации по коду. Это также может помочь в доставке приложений и библиотек C# на платформы, где поддержка .NET отсутствует, либо проблематична.

Легко конвертируйте код C# с помощью наших продвинутых возможностей

CodePorting.Translator Cs2Cpp — это приложение для перевода исходного кода C# в исходный код C++, позволяющее воспроизводить внутренние классы и порядок выполнения такими же, какими они были реализованы в исходном коде C#. Более того, после перевода проекта C# на C++ его можно будет собрать для любой из поддерживаемых целевых платформ.
public void EnclosedWhile(int max1, int max2)
{
	int number1 = 0;
	while (number1 < max1)
	{
		int number2 = 0;
		while (number2 < max2)
		{
			Console.WriteLine(number1 + number2);
			++number2;
		}
		++number1;
	}
}
void WhileStatements::EnclosedWhile(int32_t max1, int32_t max2)
{
	int32_t number1 = 0;
	while (number1 < max1)
	{
		int32_t number2 = 0;
		while (number2 < max2)
		{
			System::Console::WriteLine(number1 + number2);
			++number2;
		}
		++number1;
	}
}
public class ClassProperties
{
	public string PublicProperty
	{
		get { return mPublicPropertyField; }
		set { mPublicPropertyField = value; }
	}

	private string mPublicPropertyField;
}

class ClassProperties : public System::Object
{
    public:
        System::String get_PublicProperty();
        void set_PublicProperty(System::String value);

        ClassProperties();

    private:
        System::String mPublicPropertyField;
};
public void BreakEnclosedForeach(int[][] values, int max)
{
	foreach (int[] row in values)
	{
		if (row.Length == 0)
		{
			break;
		}

		foreach (int value in row)
		{
			Console.WriteLine(value);
			if (value > max)
			{
				break;
			}
		}
	}
}

void BreakStatements::BreakEnclosedForeach(System::ArrayPtr<System::ArrayPtr<int32_t>> values, int32_t max)
{
    for (System::ArrayPtr<System::ArrayPtr> row : values)
    {
        if (row->get_Length() == 0)
        {
            break;
        }

        for (int32_t value : row)
        {
            System::Console::WriteLine(value);
            if (value > max)
            {
                break;
            }
        }
    }
}
using System.Threading;

class LambdaTest
{
    public void TestMPMM_1()
    {
        var a = 0;
        new Thread(() =>
        {
            var b = a;
        });
    }
}
#include <system/threading/thread.h>
#include <system/details/lambda_capture_holder.h>
#include <functional>
#include <cstdint>

void LambdaTest::TestMPMM_1()
{
    System::Details::LambdaCaptureHolder<int32_t> _lch_a = 0;
    int32_t &a = _lch_a.GetCapture();
    System::MakeObject<System::Threading::Thread>(static_cast<System::Threading::ThreadStart>(static_cast<std::function<void()>>([_lch_a, &a]() -> void
    {
        int32_t b = a;
    })).template AddHeldVariable<System::Threading::ThreadStart>("a", a));
}
csharp converter feature
Внешние зависимости
Подставьте написанный вручную код в качестве замены зависимости, которая недоступна для перевода
csharp converter feature
Сохранение API
Специфические для языка конструкции, используемые в коде C#, переводятся в наиболее подходящие эквиваленты C++
csharp converter feature
Управление памятью
Управление слабыми или умными указателями в переведенном коде для автоматического удаления неиспользуемых объектов и разрыва циклических зависимостей

C++ библиотека транслятора

CodePorting.Translator Cs2Cpp — транслирует код C# в C++. Полученный код предоставляет тот же API, что и исходный .NET-код, и может работать в неуправляемой среде C++.

Библиотека поддержки транслятора содержит С++ эквиваленты классов .NET и некоторый служебный код. Переведенный код полностью зависит от этого компонента. Наряду с основными функциями .NET библиотека поддерживает System.Net, System.Drawing, System.XML, System.Security и другие подсистемы. Библиотека поддержки транслятора будет включена в скомпилированный С++ продукт. Однако если вы планируете распространять переведенный C++ код, рекомендуется использовать зависимость от NuGet пакета библиотеки поддержки транслятора.
c sharp to cpp conversion scheme

Примеры C# продуктов, успешно переведенных на C++

Связанные статьи

Дополнительные ресурсы