【问题标题】:Can Haxe compiler convert any C# code to Haxe?Haxe 编译器可以将任何 C# 代码转换为 Haxe 吗?
【发布时间】:2017-04-29 18:34:10
【问题描述】:

首先我是 Haxe 的超级新手,所以我在这里问超级菜鸟问题,我有两个问题。

1) 我的第一个问题是我知道 Haxe 编译器可以从 Haxe 转换为任何其他语言(支持),但它可以将其他语言的源代码(支持)转换为 Haxe?

2) 如果它可以做到这一点,它的能力有多大,比如它只能将几个文件转换为 C# 中的 Haxe,或者如果我提供一个巨大的 repo,比如https://github.com/dotnet/corefxhttps://github.com/tensorflow/tensorflow,它会转换吗里面的所有东西(我知道这问得太多了,但无论如何)??

【问题讨论】:

  • 不,没有人编写编译器以两种方式翻译代码。有人可能已经为 Haxe 编译器编写了 C#,但这绝对不是主要项目的目标
  • tardisgo.github.io 试图在 Haxe 和 Go 之间转换代码,所以有些人确实尝试做这样的事情,如果 Haxe 变得非常大,我相信它会发生。但是使用 c# 使用 -cs-lib 请参阅我的其他答案。

标签: c# haxe


【解决方案1】:

不,Haxe 编译器只向一个方向进行转译,即:

Haxe Code ⭢ 选定目标

另一方面,您需要一个独立于 Haxe 编译器的外部工具。多年来,创建了几个这样的工具(有些被放弃了):

还有一些生成externs的工具,而不是编译源到源:

【讨论】:

    【解决方案2】:

    Gama11 的答案是正确的,但应该添加 -net-lib 和 externs,因为它们确实允许您在 Haxe c#/mono 项目中使用 c#/mono 代码。

    Haxe 可以使用 externs(编译器定义)为所有目标使用编译代码,以便在您的 Haxe 项目中为同一目标使用,对于大多数目标,您需要手动创建合适的 externs。然而,对于某些目标(Java、C#、Flash),Haxe 可以自动生成所需的外部变量,尽管并不总是成功,但它可以使使用现有库变得相当轻松。我发现这在 flash 上非常成功,在 Java 目标上也取得了不同程度的成功,但它总是在改进,也许用 mono ( c# target ) 尝试过一次或两次。在您的 hxml 编译器代码中,您可以编写。

    -swf-lib my.swf
    -java-lib my.jar
    -net-lib my.dll
    

    您不能将 swf 或 jar 文件与 c# 项目一起使用,也不能将 dll 与 flash 或 java 项目一起使用,至少不能这样,尽管在通过特殊解析库定位 c++ 时,您可以将 swf 与 openfl 和 nme 一起使用。

    从技术上讲,这将在未来的 Haxe 手册中比我更正式地描述,请参阅 github markdown 页面的链接以获取完整的详细信息:

    "Haxe 可以直接加载 .NET 程序集文件 (.DLL) 并将其类型定义转换为 Haxe 类型。要加载 .NET 程序集,请使用 -net-lib library.dll 编译器选项。Haxe 将自动解析在该程序集文件中定义的类型,并使其可作为 Haxe 类型导入。” - 引用https://github.com/HaxeFoundation/HaxeManual/wiki/Haxe-C%23

    【讨论】:

      【解决方案3】:

      你的意图是什么?你是:

      1. 尝试在针对 C# 的 Haxe 项目中用 C# 代码编写逻辑?
      2. 尝试在针对非 C# 的 Haxe 项目中使用 C# 代码编写逻辑?

      对于 1 可以使用-net-lib,这样就可以直接在 Haxe 中使用 C# 库,所以完全不需要将 C# 代码转换为 Haxe。

      对于 2,您必须手动将 C# 代码移植到 Haxe 代码,或者使用 Gama11 提到的一些工具。 Haxe 本身不支持这种转换。

      【讨论】:

      • 我想使用 tensor-flow 编写深度学习代码,但我需要学习 python 才能做到这一点。我熟悉的语言是 JavaScript 和 C#。所以我看了一下 Haxe,我认为它可以将任何语言转换为任何语言并向后转换,正如 Gama11 所提到的那样是错误的。所以你这是我的主要目标。是否可以将用另一种语言编写的库与我们选择的语言一起使用?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      相关资源
      最近更新 更多