2

几个小时前,我开始研究一个伪代码翻译器,它将一个特定的伪代码翻译成 c/c++ 可执行代码,重新保护堆栈和队列的工作。译者有教育目的。

我还在设计这个项目。

我已经开始考虑如何做到这一点;我认为最好的方法可能是首先分析伪代码,将其更改为 c/c++ 代码,然后将其编译为 exe。

现在,这意味着客户端机器上应该安装了 ac/c++ 编译器。

当我使用 .NET 类(System.Collections.Generic.Queue(Of T)System.Collections.Generic.Stack(Of T))时,我认为解决此问题的方法是使用 Visual Studio 用于编译 c/c++ 代码的相同编译器。

我一直在调查这个过程,据我所知,使用 Visual Studio 工具编译 c/c++ 代码的唯一方法是从 Visual Studio 命令提示符执行 cl.exe。我在MSDN 上找到了这些信息(关于如何手动编译 ac/c++ 程序的文章)

所以我的第一个问题是:.NET Framework 的 USER 版本(这意味着,假设用户没有 Visual Studio)是否包含 ac/c++ 编译器?如果是,Visual Studio cl.exe 中是否包含相同的内容?我怎样才能访问它?如果没有,是否有没有 IDE 的免费编译器可以包含在我的翻译器设置中?

请注意,这里我们正在讨论将伪代码字符串转换为可执行的 c/c++ 代码,输出字符串必须从用户 PC 编译,这就是项目的内容。

4

2 回答 2

0

长的、短的、丑的都是“不”。唯一适合作为库包含的 C++ 编译器是 Clang,它是免费的,而且使用起来也不算太糟糕,而且您必须编写自己的 .NET 绑定,并且不要忘记提供自己的链接器来获得乐趣和标准库。

于 2013-05-18T07:36:33.860 回答
0

.Net 框架中不包含编译器 - 它用于运行编译器生成的二进制文件。

可以通过例如 Visual Studio Express 免费下载方案免费获得编译器。对此有一些许可限制(“没有商业用途”,如果我没记错的话 - 这意味着如果您的一位客户使用您的产品,他们将无法出售他们生成的代码[并且仍然在合同范围内与 MS])。不幸的是,这不是“没有 IDE”,但是作为下载的一部分的编译器可以在没有 IDE 的情况下使用,所以如果“没有 IDE”只是您希望能够使用您的程序运行编译器,那么它将工作。

如果你真的需要一个包含编译器(.Net 变体)但没有 IDE 代码的包,那么你将不得不找到一个不同的解决方案 - 对于 .Net,我不确定是否有一个。DDK(设备驱动工具包)包含本地 C 和 C++ 编译器。但据我所知,它不会产生.Net代码[我可能是错的]。

编辑:似乎如果您正在编写自己的代码,则可以使用CSharpCodeProvider- 但是,这与cl.exe.

于 2013-05-18T07:13:48.670 回答