2011-01-10 14 views
8

Czy ktoś mógłby mi pomóc przekonwertować C# do C++? Oto przykład:jak przekonwertować C# do 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) 
     { 
      ... 
     } 

     ...   
    } 
} 

Właściwie jak to jest skomplikowane, aby zmieszać C# i C++ w systemie UNIX, próbuję przekonwertować C# C++ Tak więc, każda pomoc będzie bardzo mile widziane

Dziękując z góry za odpowiedź, pomoc i czasu,

+6

tłumaczeniu z jednego języka na inny nigdy nie jest łatwe, ponieważ ze standardowych bibliotek uczestniczących. Na przykład, mógłbym przetłumaczyć twój kod, jeśli dostarczysz mi implementację C++ 'System.Net.WebClient'. Czy miałeś na myśli C++/CLI? –

+1

Jeśli musisz przenieść to do Uniksa, sugerowałbym bash + wget + perl zamiast C++. –

+0

Czy możesz utworzyć bardziej szczegółową listę problemów, które napotkasz? – FrustratedWithFormsDesigner

Odpowiedz

19

Właściwie jak to jest skomplikowane, aby zmieszać C# i C++ w systemie UNIX, próbuję przekonwertować C# C++

Czy brałeś pod uwagę Mono? Jest to coś, co zdecydowanie warto sprawdzić przed rozpoczęciem nauki języka C++ w celu konwersji i uruchomienia istniejącej aplikacji .NET na systemie Unix. Jest to również kompatybilny z binariami, co oznacza, że ​​nie trzeba nawet rekompilować istniejącego zespołu.

+0

Wierzę, że jednym z głównych powodów powstania projektu Mono było sprawienie, aby bardzo łatwo było mieszać kod C++ z kodem .NET, zwłaszcza C#. – Cheeso

+7

@Cheeso, żadną z głównych przyczyn powstania projektu Mono nie było zapewnienie implementacji CLR dla systemów * nix. –

+0

Właśnie przygotowywałem się do połączenia strony mono ... pokonałeś mnie! –

8

Jest prawie niemożliwe, aby przetłumaczyć bezpośrednio język C# do C++, aby działał na komputerach z systemem Unix.

Wynika to głównie z faktu, że platforma .NET Framework jest niedostępna (z C++) na komputerach z systemem Unix. Mono pozwoli ci uruchomić wiele programów C#/.NET, ale nie obsługuje C++/CLI (rozszerzenia C++, które pozwalają bezpośrednio pracować z .NET Framework).

Konwersja języka jest możliwa - choć trudna ze względu na różnice w podejściu (np. Odśmiecanie w C#), ale połączenia ramowe wymagają przeniesienia do różnych bibliotek i często nie jest dobrym kandydatem do bezpośredniego tłumaczenia.

Na przykład w powyższym kodzie musielibyśmy zdecydować się na bibliotekę C++ dla dostępu do sieci - a po dokonaniu tego wyboru dyktowałby on kod wymagany do wywołania tej biblioteki w celu pobrania ciągu stron internetowych .

+0

istnieje wiele projektów, które mogą to zrobić. Firmy zewnętrzne lub Microsoft (na przykład CoreRT) – Alexander77

+0

@ Alexander77 CoreRT tego nie robi - jest to osobna implementacja, która owija rodzime rzeczy w podobny do COM interfejs API, który można wykorzystać z C# ... –

7

Dowiedz się w języku C#, naucz się języka C++ i przepracuj dużo czasu.

Lub użyj PInvoke z zestawu C#, aby wywołać bibliotekę C++.

Lub napisz managed C++ and compile with the /clr switch. Wynikowy zestaw można odwoływać się i używać z projektów C#.

+0

dzięki za poradę !!! – make

4

Zastanów się patrząc na Vala. Vala jest językiem podobnym do C#, który przekształca się w C, a następnie w plik wykonywalny. Są bardzo małe różnice w C#. Nadal będziesz jednak musiał używać swojego mózgu.

1

Oto strona internetowa, na której można znaleźć konwerter C# do C++.

https://github.com/ASDAlexander77/cs2cpp

Trzeba tylko wykonać kilka czynności, aby wygenerować i skompilować kod C++, C#. Dodatkowo ta aplikacja konwertuje kod C# na C++, który jest kompatybilny z wieloma platformami.

-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

Oto konwerter online, który zautomatyzuje proces za Ciebie! ...

Varycode online converter

Może to zrobić w C# do C++ iz powrotem, jak również konwerterami dla Ruby, Python, Java & VB, widocznie!

Edit:
Wydaje się, że miał swój C++ (i Java) funkcjonalność usunięty - mówi tymczasowo, ale uczynił to przez długi czas. Mam nadzieję, że wkrótce wrócą!
Nadal działa dla niektórych innych języków (VB, Ruby, Python, Boo).

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/16218886) – Rook

+1

Link * to * odpowiedź. Twój komentarz nie ma sensu. Nic więcej nie mogę powiedzieć. Podejrzewam, że nawet nie przeczytałeś pytania i nie zastanawiałeś się, w jaki sposób na to odpowiedź. Redagowałem odpowiedź tak, aby była możliwie jak najbardziej opisowa dla prostego link-share-that-answer-the-question. – noelicus

+0

@noelicus Czy istnieje alternatywa? Obecnie wyświetlany jest komunikat z przeprosinami od varycode, że konwersja C++ jest niedostępna. –

0

Być może warto rozważyć CoreRT. Jest to projekt .NET, którego celem jest wyeliminowanie potrzeby uruchamiania przez CLR aplikacji obecnych na platformie docelowej. Zamiast tego generuje kod C++ z danego kodu C#. Ten kod C++ jest kompilowany i łączony na dowolnej docelowej platformie obsługującej C++.

Post na blogu Microsoft powiedział: "Jeśli naprawdę chcę napisać kod C# i mam go" po prostu pracować "na nowym urządzeniu IoT, nie mam żadnych opcji, dopóki RyuJIT nie będzie w stanie wygenerować maszyny kod współpracujący z tym procesorem i systemem operacyjnym. " Poprzez kompilację krzyżową C# do C++, programiści .Net mogą dostarczać swoje aplikacje bez potrzeby oczekiwania na wdrożenie .Net na danej platformie.

https://github.com/dotnet/corert

Powiązane problemy