11
votes

Comment convertir C # en C ++

Quelqu'un pourrait-il m'aider s'il vous plaît à convertir C # en C ++? Voici un exemple: xxx

en fait, car il est compliqué de mélanger C # et C ++ sur UNIX, j'essaie de convertir C # en C ++


7 commentaires

Traduire d'une langue à une autre n'est jamais facile à cause des bibliothèques standard impliquées. Par exemple, je pourrais être en mesure de traduire votre code si vous me fournissez une implémentation C ++ de system.net.webclient . Ou avez-vous voulu dire C ++ / CLI?


Si vous devez porter cela à UNIX, je vous suggérerais Bash + Wget + Perl plutôt que C ++.


Pourriez-vous faire une liste plus spécifique des problèmes que vous avez rencontrés?


@ Make, vous pouvez également vouloir modifier ce code avant de la traduire. Frapper un serveur Web 10 fois par seconde n'est probablement pas une bonne idée.


C ++ / CLI n'est actuellement pas pris en charge via mono (les extensions de syntaxe ne sont pas encore implémentées). Si vous en avez besoin pour fonctionner sur UNIX, compilez simplement le code C # à l'aide de mono. Si vous avez besoin d'une implémentation Unix uniquement, Perl est la voie à suivre et vous économiserons beaucoup de maux de tête.


merci pour des réponses. 1) C ++ / CLI est-il pris en charge sur UNIX? @ Ben Voigt, pourriez-vous me donner plus de détails sur l'utilisation de bash + wget + perl ... grâce à vous tous!


Merci à vous tous d'avoir partagé vos idées avec moi ...


9 Réponses :


24
votes

En fait, comme il est compliqué de mélanger C # et C ++ sur UNIX, j'essaie de convertir C # en C ++

Avez-vous considéré Mono ? C'est quelque chose qui vaut vraiment la peine d'être vérifié avant de commencer à apprendre C ++ pour convertir et exécuter une application .NET existante sur UNIX. Il est également compatible binaire signifiant que vous n'avez même pas besoin de recompiler votre assemblage existant.


13 commentaires

Je crois que l'une des principales raisons de la création du projet mono était de faciliter la combinaison de code C ++ avec code .NET, en particulier C #.


@Cheeso, aucune des principales raisons de la création du projet Mono n'a été de fournir une implémentation CLR pour * Nix Systems.


Je me préparais juste à lier le mono site ... tu m'as battu!


Oui! J'ai considéré mono> Cependant, cela nécessite du temps et beaucoup de travail pour le faire travailler sur Unix ...


@ Moke, l'installation de Mono nécessite beaucoup moins de travail que de porter le code que vous avez affiché à C ++.


De plus, le mélange C # et C ++ nécessite d'utiliser un fichier .dll sur MS Windows. Cependant, la DLL n'est pas prise en charge sur UNIX


@ Make, pourquoi voulez-vous mélanger C # avec C ++? Pourquoi n'utilisez-vous pas uniquement de code géré?


@Darin Dimitrov, merci pour des réponses. Y a-t-il un paquet pour UNIX?


@ Makakes, oui il y en a un pour Solaris: Go-Mono.com/mono- Téléchargements / Download.html .


@Darin Dimitrov, pourriez-vous me donner plus de détails sur l'utilisation du code géré ????? Merci!


@ Moke, ce que vous avez posté dans votre question est le code géré. C # est le code géré. Tout ce qui est compilé vers IL et s'exécute sur le CLR est le code géré. Mono vous aide à exécuter le code géré sur * NIX Systems.


@Darin Dimitrov, merci de partager vos idées avec moi ...


Dimitrov, fournissant un CLR sur Nix n'a jamais été un but final de Mono. Je n'ai pas indiqué mon point clairement. Ce que je voulais dire, c'est que la raison pour laquelle Miguel a poursuivi Mono au début était de permettre de mélanger des langues, telles que C ++ et C #, sur Linux. Mail.gnome.org/archives/gnome-hackers/2002- Février / ... Mono fournit un CLR (plus ou moins) sur * Nix, mais n'a pas été conçu * à cet effet . CLR est un moyen d'atteindre une fin. L'objectif final était de pouvoir mélanger des langues plus facilement (bibliothèques et applications) et Miguel envisageons le mono Runtime (AKA CLR) comme le véhicule pour fournir cette capacité.



8
votes

Il est presque impossible de traduire directement C # en C ++ afin qu'il fonctionne sur des machines UNIX.

Ceci est principalement dû au fait que la framework .NET n'est pas disponible (de C ++) sur des machines UNIX. Mono vous permettra de courir de nombreux programmes C # /. NET, mais ne prend pas en charge C ++ / CLI (les extensions C ++ qui permettent de travailler directement avec la framework .NET).

Conversion de la langue est possible - bien que difficile en raison des différences d'approche (par exemple, la collecte des ordures en C #), mais les appels-cadres nécessiteront des portions à différentes bibliothèques, et ce n'est souvent pas un bon candidat à une traduction directe. < / p>

Par exemple, dans votre code ci-dessus, vous devez décider d'une bibliothèque C ++ pour un accès Web - et une fois que vous avez eu ce choix, cela dicterait le code requis pour appeler cette bibliothèque pour télécharger la chaîne de site Web.


2 commentaires

Il y a beaucoup de projet qui peut le faire. 3ème Parties ou de Microsoft (par exemple, Corert)


@ Alexander77 Corert ne le fait pas - c'est une implémentation distincte qui enveloppe des trucs natifs dans une API comme une API qui est utilisable de C # ...



10
votes

apprendre c #, apprendre c ++ et consacrer beaucoup de temps à réécrire.

ou utilisez Pinvoke de l'assemblage C # pour appeler dans un C ++ dll.

ou écrire géré C ++ et compiler avec le / CLR Switch . L'assemblage résultant peut être référencé et utilisé à partir de projets C #.


0 commentaires

4
votes

envisager de regarder Vala. Vala est un langage semblable au C # qui convertit en C puis dans un exécutable. Il y a très peu de différences avec c #. Vous devrez toujours utiliser votre cerveau cependant.


0 commentaires

5
votes

J'utilise C # à C ++ Converter Heure à autre. C'est vraiment génial pour la conversion d'extraits de C # à C ++ ou C ++ / CLI.


0 commentaires

1
votes

Voici le site Web où vous pouvez trouver C # à C ++ Converter.

https://github.com/asdalexander77/cs2cpp

Vous devez juste effectuer certaines étapes pour générer et compiler C ++ code de C #. De plus, cette application convertit le code C # en C ++ qui est compatible avec la plate-forme croisée.


0 commentaires

3
votes

edit:
Le site répertorié a été interrompu. Je laisserai 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 de VaryCode

Il peut faire C # à C ++ et à nouveau ainsi que des convertisseurs pour Ruby, Python, Java & VB, apparemment!

edit:
Il semble avoir eu sa fonctionnalité C ++ (et Java) supprimée - elle dit temporairement, mais la fait depuis longtemps. Espérons qu'ils le ressusciteront bientôt!
Travaille toujours pour d'autres langues (VB, Ruby, Python, BOO).


5 commentaires

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement des liaisons peuvent devenir invalides si la page liée change. - de l'avis


Le lien est la réponse. Votre commentaire n'a aucun sens. Il n'y a rien d'autre pour moi de dire. Je soupçonne que vous n'avez même pas lu la question et que vous avez examiné comment cela répond. J'ai édité la réponse pour être aussi descriptive que possible pour un simple lien-partage - cette réponse-la question.


@NOELICUS Y a-t-il une alternative? Un message s'affiche actuellement avec des excuses de VaryCode que la conversion C ++ est indisponible.


Hmm - je ne sais pas, désolé.


Tout le domaine est maintenant à vendre ...



4
votes

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

Un post sur un blog Microsoft a déclaré: "Si je veux vraiment écrire un code C # et que je" travaille "" sur un nouveau périphérique IOT, je n'ai aucune option tant que le Ryujit n'est pas capable de générer un code de machine cela fonctionne avec ce processeur et ce système d'exploitation. " En compilant la compilation C # à C ++, .NET Les développeurs peuvent ensuite livrer leurs applications sans avoir à attendre .NET à être déployé sur une plate-forme donnée.

https://github.com/dotnet/corerert


0 commentaires

2
votes

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:

http://alexalbala.github.io/alter-native/

citation de sa page principale:

Il fournit un outil à des applications portuaires faciles des langages de haut niveau tels que .net à langages indigènes comme C ++. C'est un projet de recherche et c'est en cours de développement avec le Collaboration d'UPC - Barcelonatech et Alteraid S.L.


1 commentaires

Notez que ce projet est très grand (plus de 280 mb +)