web-dev-qa-db-fra.com

comment convertir C # en C++

Est-ce que quelqu'un pourrait m'aider à convertir C # en C++? Voici un exemple:

using System;
using System.Net;
using System.Text;
using System.IO;
using System.Threading;
namespace read_website
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                DownloadString("http://www.xxx.asp");
                Thread.Sleep(100);//update every 100 millisecoand 
            }
        }

        public static void DownloadString(string address)
        {           
            WebClient client = new WebClient();
            string website = client.DownloadString(address);
            get_Current_X1_value(website);
        }

        static void get_Current_X1_value(string web)
        {
            int x = web.IndexOf("Current X1 value:");
            string part1 = web.Substring(x, 100);
            string[] array = part1.Split('>', '<');
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i].Contains("Current X1 value:"))
                    Console.Write(array[i]);
                if (array[i].Contains("W"))
                    Console.WriteLine(array[i]);
            }

        }
    }
}

En fait, comme il est compliqué de mélanger C # et C++ sous Unix, je tente de convertir C # en C++, toute aide sera donc très appréciée.

En vous remerciant par avance pour votre réponse, votre aide et votre temps,

8
make

En fait, comme il est compliqué de mélanger C # et C++ sous Unix, je tente de convertir C # en C++.

Avez-vous envisagé Mono ? C’est une chose à vérifier absolument avant de commencer à apprendre le C++ afin de convertir et d’exécuter une application .NET existante sous Unix. C'est également compatible binaire, ce qui signifie que vous n'avez même pas besoin de recompiler votre assembly existant.

22
Darin Dimitrov

Il est presque impossible de traduire directement C # en C++ pour qu'il puisse s'exécuter sur des machines Unix.

Cela est principalement dû au fait que le .NET Framework n'est pas disponible (à partir de C++) sur les machines Unix. Mono vous permettra d'exécuter de nombreux programmes C #/.NET, mais ne prend pas en charge C++/CLI (les extensions C++ permettant de travailler directement avec le .NET Framework).

La conversion du langage est possible - bien qu’elle soit difficile en raison des différences d’approche (par exemple, la récupération de place en C #), mais les appels de structure nécessiteront un portage dans différentes bibliothèques et ce n’est souvent pas un bon candidat pour une traduction directe.

Par exemple, dans le code ci-dessus, vous devez choisir une bibliothèque C++ pour l’accès Web. Une fois que vous avez fait votre choix, le code requis pour appeler cette bibliothèque afin de télécharger la chaîne de site Web.

8
Reed Copsey

Apprenez le C #, le C++ et passez beaucoup de temps à réécrire.

Ou utilisez PInvoke depuis l’assembly C # pour appeler une dll C++.

Ou écrivez gérez C++ et compilez avec le commutateur/clr . L'assembly résultant peut être référencé et utilisé à partir de projets C #.

8
Trystan Spangler

J'utilise convertisseur C # en C++ de temps en temps. C’est vraiment formidable pour la conversion d’extraits de c # en c ++ ou c ++/cli.

5
igorushi

Pensez à regarder Vala. Vala est un langage semblable à C # qui se transforme en C puis en un exécutable. Il y a très peu de différences avec C #. Vous devrez quand même utiliser votre cerveau.

4
Samuel Allan

Modifier:
Le site indiqué a été interrompu. Je vais laisser l'ancienne réponse ici pour référence ...

Ancienne réponse:
Voici un convertisseur en ligne qui automatisera le processus pour vous! ...

Convertisseur en ligne Varycode

Il peut faire du C # au C++ et inversement ainsi que des convertisseurs pour Ruby, Python, Java et VB, apparemment!

Modifier:
Il semble que sa fonctionnalité C++ (et Java) ait été supprimée - il est indiqué temporairement, mais le fait depuis longtemps. Espérons qu'ils le ressusciteront bientôt!
Fonctionne toujours pour d’autres langues (VB, Ruby, Python, Boo).

3
noelicus

Vous voudrez peut-être examiner CoreRT. Il s’agit d’un projet .NET dont le but est d’éliminer la nécessité pour le CLR d’être présent sur la plate-forme cible pour exécuter une application. Au lieu de cela, il génère du code C++ à partir d'un code C # donné. Ce code C++ est compilé et lié sur toute plate-forme cible prenant en charge C++.

Un article sur un blog de Microsoft disait: "Si je veux vraiment écrire du code C # et le laisser" fonctionner "sur un nouvel appareil IoT, je n'ai aucune option jusqu'à ce que le RyuJIT soit capable de générer un code machine qui fonctionne avec ce processeur et le système d'exploitation ". En compilant C # en C++, les développeurs .Net peuvent ensuite livrer leurs applications sans attendre le déploiement de .Net sur une plate-forme donnée.

https://github.com/dotnet/corert

2
zumalifeguard

Voici le site Web sur lequel vous pouvez trouver le convertisseur C # en C++.

https://github.com/ASDAlexander77/cs2cpp

Vous devez juste effectuer quelques étapes pour générer et compiler du code C++ à partir de C #. De plus, cette application convertit le code C # en C++ compatible avec plusieurs plates-formes.

1
Alexander77

Comme déjà mentionné ici, la traduction des bibliothèques peut être un problème, mais un projet open source qui pourrait aider dans certains cas est:

http://alexalbala.github.io/Alter-Native/

Citation de sa page principale:

Il fournit un outil permettant de transférer facilement des applications depuis des langages de haut niveau tels que .NET vers des langages natifs tels que C++. Il s’agit d’un projet de recherche en cours de développement avec la collaboration de UPC - BarcelonaTech et AlterAid S.L.

0
Martin Vahi