4

移植可能な非ビジュアル ライブラリ用の C コードがあるとします。コードはほとんど CRT に依存しています (QT/DirectX/WinAPI などの依存関係はありません)。

このコードを C# アプリケーションで使用する方法はありますか? 私は Managed C++ について知っていますが、それは私にとって受け入れられる方法ではありません

自動変換に使用できる C/C++ から C# へのコンバーター (読み取り可能な出力は必要ありません。動作するもので十分です)、またはコンパイル済みの C/C++ コードを実行するために使用できるエミュレーターを考えました。

C# コードから既存の C/C++ コードを使用するのに役立つ何かを知っていますか?

編集:

P/Invoke も受け入れられる方法ではありません。外部 EXE を呼び出したり、COM/ActiveX を使用したりします。C および C# コードを 1 つのマネージ DLL または EXE に組み込むことができるものが必要です。

既存の C コードはライブラリ (.lib) であり、EXE ではありません。

4

2 に答える 2

7

C++ をマネージ C++ として一時的にコンパイルして .net アセンブリを取得し、Reflector を使用してそれを純粋な C# に逆コンパイルしてみませんか?

于 2012-07-02T13:11:42.837 に答える
0

コードをC#に変換せずに、DLLから直接メソッドを使用するのが最も簡単だと思います。これは非常にうまく機能しますが、1つの欠点は、異なるプラットフォーム用に複数のバイナリを出荷する必要があることです。Dllからの関数のインポートは次のように簡単です。

[DllImport("kernel32.dll")]
public static extern IntPtr GetProcAddress (IntPtr hModule, string procedureName);

CとC#の両方のコードを1つのDLLに組み込むことは、前者を変換せずに実行できるとは思いません。

于 2012-07-02T12:53:09.960 に答える