2011-01-10 26 views
8

C#をC++に変換する手助けをしてもらえますか?ここでの例である:UNIX上でC#とC++を混合するために複雑になっているようC#をC++に変換する方法

using System; 
using System.Net; 
using System.Text; 
using System.IO; 
using System.Threading; 
namespace read_website 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ... 
     } 

     ...   
    } 
} 

は実は、私はC++ へのC#を変換しようとしています、任意のヘルプは非常によろしくお願いします

を理解されるであろうお返事のために、役立つと時間、UNIX上でC#とC++を混合するために複雑になっているよう

+6

が伴うため、標準ライブラリを簡単になることはありません。例えば、あなたが 'System.Net.WebClient'のC++実装を私に提供すれば、あなたのコードを翻訳することができます。あるいは、C++/CLIを意味しましたか? –

+1

あなたがunixに移植する必要があるなら、私はC++ではなくbash + wget + perlを提案します。 –

+0

あなたが遭遇した問題の具体的なリストを作成できますか? – FrustratedWithFormsDesigner

答えて

19

は実は、私はC++

へのC#を変換しようとしています

あなたはMonoと考えましたか?これは、Unix上で既存の.NETアプリケーションを変換して実行するために、C++を学び始める前にチェックする価値があります。バイナリ互換もあり、既存のアセンブリを再コンパイルする必要はありません。

+0

Monoプロジェクトの開始の主な理由の1つは、C++コードを.NETコード、特にC#と混在させることが非常に簡単だったと思います。 – Cheeso

+7

@Cheeso、Monoプロジェクトの開始の主な理由の1つは、* nixシステム用のCLR実装を提供することでした。 –

+0

私はちょうどモノサイトをリンクする準備をしていた...あなたはそれに私を打つ! –

8

C#をC++に直接変換してUnixマシン上で実行することはほとんど不可能です。

これは主に、Unixマシンで.NET Frameworkが(C++から)利用できないためです。 Monoは多くのC#/ .NETプログラムを実行できますが、C++/CLI(.NET Frameworkで直接作業できるC++拡張機能)はサポートしていません。

アプローチの違い(例:C#でのガベージコレクション)によっては困難ですが、フレームワーク呼び出しでは別のライブラリへの移植が必要になることがあります。直接翻訳には適していないことがよくあります。

たとえば、上記のコードでは、WebアクセスのためのC++ライブラリを決定する必要があります。その選択肢があれば、そのライブラリを呼び出してWebサイトの文字列をダウンロードするために必要なコードを指示します。

+0

それを行うことができるプロジェクトがたくさんあります。 (CoreRTのような)第三者またはマイクロソフト(例えばCoreRT)からのものです。 – Alexander77

+0

@ Alexander77 CoreRTはそれをしません - それはC#から利用可能なAPIのようなCOMのネイティブなものを包む別の実装です... –

7

C#を学び、C++を学び、多くの時間を書き直すことができます。

またはC#アセンブリのPInvokeを使用してC++ DLLを呼び出します。

またはmanaged C++ and compile with the /clr switchと書いてください。生成されたアセンブリは、C#プロジェクトから参照して使用することができます。

+0

アドバイスありがとうございます! – make

4

Valaを見ることを検討してください。 ValaはCに変換してから実行可能ファイルに変換するC#のような言語です。 C#との違いはほとんどありません。あなたはまだあなたの脳を使用する必要があります。

5

私はC# to C++ converter時を使用しています。 c#からC++またはC++/cliへのスニペット変換には本当に便利です。

1

ここには、C#からC++へのコンバータがあるWebサイトがあります。

https://github.com/ASDAlexander77/cs2cpp

あなただけのC#からC++コードを生成し、コンパイルするためにいくつかのステップを実行する必要があります。さらに、このアプリケーションは、クロスプラットフォーム互換のC#コードをC++に変換します。

-3
static void Main(string[] args) 
    { 
     int t = int.Parse(Console.ReadLine()); 
     for (int i = 0; i < t; i++) 
     { 
      string []a = Console.ReadLine().Split(); 
      string[] b = Console.ReadLine().Split(); 
      int n = int.Parse(a[0]); 
      int k = int.Parse(a[1]); 
      int c = int.MinValue; 
      for (int l = 0; k<=n; l++) 
      { 
       for (int j = l; j < k; j++) 
       { 
        if (int.Parse(b[j]) > c) 
         c = int.Parse(b[j]); 
       } 
       k++; 
       Console.Write(c); 
       c = int.MinValue; 
      } 
     } 
3

ここでは、プロセスを自動化するオンラインコンバータがあります。 ...これは明らかに、ルビー、PythonやJavaの& VBのためのコンバータと同様、再びC++にC#の操作を行うことができ

Varycode online converter

編集:
そのC++(とJava)を持っているように見える機能は削除さ - それは一時的に言うが、今長い間そうしています。うまくいけば、彼らはすぐにそれを復活させるでしょう!
他の言語(VB、Ruby、Python、Boo)でも動作します。

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 16218886) – Rook

+1

リンク*は答えです。あなたのコメントは意味をなさない。私には言い訳がありません。私はあなたが質問を読んでいないと思うし、それがどのように答えているか考えました。私は単純なリンク共有のためにできるだけわかりやすいように答えを編集しました。 – noelicus

+0

@noelicus代替手段はありますか?メッセージは現在、C++変換が利用できない変化コードからの謝罪と共に表示されます。 –

0

CoreRTについて考えてみてください。これは、ターゲットプラットフォームにアプリケーションを実行するCLRの必要性を排除することを目標とする.NETプロジェクトです。代わりに、C#コードからC++コードを生成します。そのC++コードは、C++をサポートするすべてのターゲットプラットフォームでコンパイルおよびリンクされます。

マイクロソフトのブログに載っている記事によれば、「本当にC#コードを書いて新しいIoTデバイス上で動作させたいのであれば、RyuJITがマシンを生成できるようになるまではそのプロセッサとオペレーティングシステムで動作するコード。 C#をC++にクロスコンパイルすることにより、.Net開発者は.Netが特定のプラットフォームにデプロイされるのを待たずにアプリケーションを配布できます。ある言語から別の言語翻訳

https://github.com/dotnet/corert

関連する問題