Haxe 编译器可以将任何 C# 代码转换为 Haxe 吗?

Can Haxe compiler convert any C# code to Haxe?

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

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

2) 如果它可以这样做,它的能力有多大,比如它只能将几个文件转换成 C# 中的 Haxe,或者如果我给出一个巨大的回购协议,比如这个 https://github.com/dotnet/corefx or https://github.com/tensorflow/tensorflow 它会转换吗里面的所有内容(是的,我知道这个问题太多了,但无论如何)??

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

Haxe Code ⭢ Selected Target

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

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

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

Haxe 可以使用外部(编译器定义)为所有目标使用已编译代码,以便在您的 Haxe 项目中为同一目标使用,对于大多数目标,您需要手动创建合适的外部。然而,对于某些目标(Java、C#、Flash),Haxe 可以自动生成所需的 externs,尽管并不总是成功,但它可以使使用现有库变得相当轻松。我发现这在 flash 上非常成功,在 Java target 上也取得了不同程度的成功,但它一直在改进,也许在 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 一起使用通过特殊的解析库。

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

"Haxe can directly load .NET assembly files (.DLL) and convert its type definitions for use as Haxe types. To load a .NET assembly, use -net-lib library.dll compiler option. Haxe will then automatically parse types defined in that assembly file and make them available for import as Haxe types." - 引用 https://github.com/HaxeFoundation/HaxeManual/wiki/Haxe-C%23

你的意图是什么?你是:

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

对于 1 你可以使用 -net-lib 所以你可以直接在 Haxe 中使用 C# 库,所以你根本不需要将 C# 代码转换为 Haxe。

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