8
votes

Compiler Simple String

se demandait simplement s'il y a des fonctions intégrées en C ++ ou C # qui vous permet d'utiliser le compilateur au moment de l'exécution? Comme par exemple si je veux traduire: xxx

dans: xxx

puis générer un exe qui sera alors capable d'afficher le Message ci-dessus? J'ai vu des exemples de projets autour de la bande il y a quelques années qui l'a fait mais ne le trouva plus.


0 commentaires

6 Réponses :


5
votes

en C ++ Vous ne pouvez pas utiliser le compilateur au moment de l'exécution, mais vous pouvez intégrer un interprète dans votre projet, comme Cint.


1 commentaires

hmmm intéressant, je vérifie cela maintenant - merci beaucoup :)



3
votes

Vous pouvez toujours le faire de manière sale, avec système () et appeler le compilateur "GCC ..." ou votre équivalent


0 commentaires

16
votes

Il est possible d'utiliser C #. Regardez ce exemple de projet à partir du codeProject.

Extrait de code xxx


1 commentaires

L'utilisateur doit-il avoir le compilateur C # installé? Ou est-ce que cela vient avec .net? Selon MSDN.microsoft.com/en-us/Library/ ... , cette fonctionnalité est incluse dans system.dll.



1
votes

La suggestion de Nick est bonne, mais il existe une alternative qui est probablement plus simple à mettre en œuvre (mais pourrait ne pas être appropriée pour tous les projets). Si vous pouvez supposer que votre utilisateur dispose d'un compilateur installé, vous pouvez générer un fichier, puis la compiler à l'aide de leur compilateur.


0 commentaires

1
votes

Le .NET-Framework fournit quelques classes qui vous donnent accès aux compilateurs et aux générateurs de code pour C # et VB.NET, ce qui entraîne un assemblage chargé en mémoire ou un simple fichier .exe. Voir CsharpCodeProvider et Cet article .

alternativement, vous pouvez simplement créer les fichiers source et les compiler manuellement (appels de ligne de commande ( système ) sur le compilateur, les fabricants).

Concernant la traduction de votre source: vous devrez utiliser des mécanismes d'analyse tels que des expressions régulières ici ou utiliser un outil compilateur-compiler comme Coco / R, YACC, etc. (Notez que sous C ++, Boost :: esprit peut également être assez utile)


0 commentaires

1
votes

in c # Vous pouvez créer un arbre .NET "CODEDOM", puis compiler cette utilisation à l'aide du compilateur .NET. Cela vous donne un accès complet à la plupart des fonctionnalités de .NET.

Voir l'espace de noms "System.CodeDom" ou le MSDN Aide pour CodecompileUnit pour plus de détails.


0 commentaires