12

有人可以帮我将 C# 转换为 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)
        {
            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]);
            }

        }
    }
}

实际上,由于在 unix 上混合 C# 和 C++ 很复杂,我正在尝试将 C# 转换为 C++

4

8 回答 8

25

实际上,由于在 unix 上混合 C# 和 C++ 很复杂,我正在尝试将 C# 转换为 C++

你考虑过Mono吗?在开始学习 C++ 以便在 Unix 上转换和运行现有的 .NET 应用程序之前,这绝对值得检查。它也是二进制兼容的,这意味着您甚至不需要重新编译现有程序集。

于 2011-01-10T20:36:17.880 回答
11

学C#,学C++,花很多时间重写。

或者使用C# 程序集中的PInvoke调用 C++ dll。

或者编写托管 C++ 并使用 /clr 开关进行编译。生成的程序集可以从 C# 项目中引用和使用。

于 2011-01-10T20:44:57.950 回答
9

几乎不可能将 C# 直接翻译成 C++ 以便在 Unix 机器上运行。

这主要是因为 .NET Framework 在 Unix 机器上不可用(来自 C++)。Mono 将允许您运行许多 C#/.NET 程序,但不支持 C++/CLI(允许直接使用 .NET Framework 的 C++ 扩展)。

转换语言是可能的——尽管由于方法的不同(例如,C# 中的垃圾收集)很困难,但框架调用将需要移植到不同的库,并且它通常不是直接翻译的好选择。

例如,在您上面的代码中,您必须决定一个用于 Web 访问的 C++ 库 - 一旦您做出选择,它将规定调用该库以下载网站字符串所需的代码。

于 2011-01-10T20:40:50.660 回答
6

我不时使用C# 到 C++ 转换器。它非常适合从 c# 到 c++ 或 c++/cli 的片段转换。

于 2015-08-16T11:06:20.203 回答
4

考虑看看 Vala。Vala 是一种类似 C# 的语言,它先转换为 C,然后再转换为可执行文件。与 C# 几乎没有区别。不过,您仍然必须使用您的大脑。

于 2013-12-17T21:10:57.597 回答
4

您可能需要考虑 CoreRT。这是一个 .NET 项目,其目标是消除 CLR 存在于目标平台上以运行应用程序的需要。相反,它从给定的 C# 代码生成 C++ 代码。该 C++ 代码在任何支持 C++ 的目标平台上编译和链接。

微软博客上的一篇文章说:“如果我真的想编写一些 C# 代码并让它在新的物联网设备上‘正常工作’,我没有任何选择,直到 RyuJIT 能够生成与那个处理器和操作系统。” 通过将 C# 交叉编译到 C++,.Net 开发人员可以交付他们的应用程序,而无需等待 .Net 在给定平台上部署。

https://github.com/dotnet/corert

于 2017-11-30T19:45:25.863 回答
3

编辑:
列出的网站已停产。我将在这里留下旧答案以供参考...

旧答案:
这是一个在线转换器,可以为您自动执行该过程!...

Varycode 在线转换器

显然,它可以将 C# 转换为 C++ 并返回,还可以转换为 Ruby、Python、Java 和 VB!

编辑:
它似乎已经删除了它的 C++(和 java)功能 - 它暂时说,但现在已经这样做了很长时间。希望他们能尽快复活!
仍然适用于其他一些语言(VB、Ruby、Python、Boo)。

于 2017-05-24T11:05:47.923 回答
2

正如这里已经提到的,库的翻译可能是一个问题,但在某些情况下可能会有所帮助的一个开源项目是:

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

来自其主页的引用:

它提供了一个工具,可以轻松地将应用程序从 .NET 等高级语言移植到 C++ 等本地语言。这是一个研究项目,正在与 UPC - BarcelonaTech 和 AlterAid SL 合作开发

于 2018-08-29T18:13:39.390 回答