C# から C++ 変換

エンタープライズ レベルの C# ライブラリまたはコンソール アプリケーションを、.NET Framework を完全にサポートする同等の C++ に変換します。 作成された C++ ライブラリは、Linux、MacOS、Windows などの幅広いオペレーティング システムと互換性があり、アプリケーションを複数のプラットフォームに展開できるようになります。 最小限の手作業で数百万行のコードを一度に翻訳します。
リクエストサービス

CodePorting.Translator Cs2Cpp はトランスパイラ アプリケーションです

API やコード ドキュメントを変更せずに、両方の言語で同じバージョンのソフトウェアをリリースするために、C# コードを継続的に改善する C++ への自動翻訳を設定するために使用できます。 また、.NET サポートが存在しないか、問題があるプラットフォームに C# アプリケーションとライブラリを配信する場合にも役立ちます。

強力な機能を使用して C# コードを簡単に変換

CodePorting.Translator Cs2Cpp は、ソース コードからソース コードへのトランスパイラー アプリで、元の 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
メモリ制御
変換されたコード内の弱いポインタまたは共有ポインタを制御して、未使用のオブジェクトを破棄し、ループ参照を中断します。

翻訳者サポート ライブラリ

CodePorting.Translator Cs2Cpp は、C# コードを C++ に変換できるフレームワークです。 結果のコードは、元の .NET コードが持っていたものと同じ API を提供し、変換されたアンマネージ C++ 環境で実行できます。

トランスレータ サポート ライブラリは、.NET クラスと一部のサービス コードの代替となる C++ ライブラリです。 翻訳されたコードは最終的にこのコンポーネントに依存します。 .NET コア機能に加えて、ライブラリは System.Net、System.Drawing、System.XML、System.Security、およびその他のサブシステムをサポートしています。 トランスレータ サポート ライブラリは、コンパイルされた製品に含まれます。 翻訳された C++ コードを配布する予定がある場合は、トランスレーター サポート ライブラリの NuGet パッケージへの依存関係を含めることをお勧めします。
c sharp to cpp conversion scheme

C++ に正常に変換された C# 製品の例

関連記事

サポートと学習リソース