5

C++/CLI の小規模から中規模のプロジェクトがあります。私は C++/CLI の構文拡張が大嫌いで、C# で作業したいと思っています。一方を他方に変換する適切な仕事をするツールはありますか?

編集:明らかにc++/CLIを意味する前にマネージドc++と言ったとき

4

5 に答える 5

6

C++ コードがピュア マネージの場合、マネージ C++ コード (および C++/CLI コード) のみを C# に変換できます。そうでない場合、つまりソースにネイティブ コードが含まれている場合、.NET Reflector などのツールはコードを変換できません。

ネイティブ C++ コードが混在している場合は、ネイティブ コードを別の DLL に移動し、DLL 関数への呼び出しを簡単に識別できるスタブ関数に置き換え、プロジェクトを純粋な .NET ライブラリとしてコンパイルしてから、 C# コードに逆コンパイルする .NET リフレクター。次に、スタブ関数への呼び出しを、ネイティブ DLL への p-invoke 呼び出しに置き換えることができます。

幸運を!心中お察しします!

于 2008-09-16T16:41:48.710 に答える
2

これが機能するかどうかはわかりませんが、 ReflectionEmitLanguageプラグインと一緒に.Net Reflectorを使用してみてください。RelelectionEmitLanguage プラグインは、アセンブリを c# コードに変換すると主張しています。

于 2008-09-16T16:34:30.880 に答える
2

.NET Managed C++ は、難破船のようなものです。しかし、C++ CLI を調べましたか? Microsoft は、この分野で C++ を .NET の第一級市民にするために素晴らしい仕事をしたと思います。

http://msdn.microsoft.com/en-us/magazine/cc163852.aspx

于 2008-09-16T15:57:17.223 に答える
1

2004 年までさかのぼると、Microsoft はマネージ C++ を C++/CLI に変換するツールを持っていました。いくつかのプロジェクトで実行しましたが、正直なところ、プロジェクトをクリーンアップするために残された作業量は、最初に手動で変換を行う場合に必要な作業量と同じくらいでした。ただし、ツールが公開されたことはないと思います(おそらくこの理由で)。

使用している Visual Studio のバージョンはわかりませんが、/clr:oldSyntax スイッチを使用して Visual Studio 2005/2008 でコンパイルされない C++ コードを管理しており、そのための遺物 VS 2003 がまだ残っています。

私は便利な方法で C++ から C# に移行する方法を知りません...リフレクターを介してラウンドトリップを試すことができます:)

于 2008-09-16T16:12:17.237 に答える
0

このようなプロジェクトは、多くの場合、c++/cli で行われます。これは、C# は実際にはタスクのエレガントなオプションではないためです。たとえば、いくつかのネイティブ C++ ライブラリとやり取りする必要がある場合や、低レベルの C で非常に高いパフォーマンスを発揮する必要がある場合などです。したがって、切り替えを行う前に、c++/cli を選択した人に正当な理由がないことを確認してください。

そうは言っても、すべての C++/cli コードが C# に変換できるわけではないという単純な理由から、あなたが求めていることを行うものがあることに非常に懐疑的です (おそらくその逆も同様です)。

于 2008-09-16T17:39:27.993 に答える