繁体   English   中英

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

[英]Can Haxe compiler convert any C# code to Haxe?

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

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

2)如果它可以这样做,它的功能有多少,比如它只能将几个文件转换为 C# 到 Haxe,或者如果我提供一个巨大的 repo,比如让我们说这个https://github.com/dotnet/corefxhttps ://github.com/tensorflow/tensorflow它将转换其中的所有内容(是的,我知道这要求太多了,但无论如何)??

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

Haxe 代码 ⭢ 选定的目标

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

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

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

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

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

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

从技术上讲,对于 C#,这将在未来的 Haxe 手册中比我更正式地描述,有关完整详细信息,请参阅 github 降价页面的链接:

“Haxe 可以直接加载 .NET 程序集文件 (.DLL) 并转换其类型定义以用作 Haxe 类型。要加载 .NET 程序集,请使用 -net-lib library.dll 编译器选项。然后 Haxe 将自动解析在该程序集文件并使它们可作为 Haxe 类型导入。” - 引用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 本身不支持这种转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM