質問

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

編集: 以前マネージド C++ と言ったのは、明らかに C++/CLI を意味していました。

役に立ちましたか?

解決

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

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

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

他のヒント

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

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

うまくいくかわかりませんが、使ってみてください .Netリフレクター とともに 反射発光言語 プラグイン。RelectionEmitLanguage プラグインは、アセンブリを C# コードに変換すると主張します。

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

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

C++ から C# に便利な方法を知りません...リフレクターを通して往復させてみることもできます:)

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top