Haxe会为创建图书馆工作吗?

eye*_*ate 9 haxe

我正在考虑使用Haxe的跨语言能力,但不确定它是否是最适合这项任务的.我将编写一个通用库,它应该能够在目标语言中使用并记录下来(能够应用像doxygen这样的东西).换句话说,我想在Haxe中编写一个通用库,输出c ++代码(和java一起完成),并让其他程序员可以访问它.(不仅仅是C +编译器可读)这是这项任务的最佳选择,或者如果我为每种语言编写一个版本的库,会不会更好?

Wan*_*eck 7

当然有可能,即使根据所选平台可能存在一些尴尬.

在JavaScript,neko和Flash上​​,生成的代码非常接近原生代码,人们将能够使用它,甚至不知道它是在Haxe中生成的.

在PHP上,我恐怕我不太清楚它是如何工作的.但是有一些命名空间黑客有点尴尬,但我认为这些可以通过用手写代码包装库来解决.

在C++上,如果你不介意使用一些样板代码来使反射工作,它将大部分正常工作.它有一个非标准的处理构造函数的方式,而且你应该非常小心,因为它附加了一个gc,我不知道它处理外部代码持有它不知道的引用的程度.

关于新目标 - C#和Java将与本机代码100%互操作.大多数Haxe功能都映射到平台的本机功能,但代理除外.但是如果你没有在你的界面中公开代表,那就没问题了.它们还会生成一些样板代码,以便在这些平台上实现快速反射,但如果您知道自己在做什么,就会有一些方法可以禁用它.


And*_* Li 3

Haxe 并不是为编写跨语言库而设计的,尽管它可以做到,并且我已经看到了一些它有效的示例:

  • Polygonal,一种可在 Haxe 和 AS3 中使用的数据结构和物理引擎。
  • verb,一个基于 NURBS 的 CAD 库,可在 Haxe 和 JS 中使用。
  • daff,一个用于比较表的库,可用于 JS、Python、Java、C#、C++、Ruby 和 PHP。

然而,特别是对于 C++ 来说,由于hxcpp生成了许多 Haxe 特定的东西,包括 GC,它可能需要大量的清理工作,或者使用起来并不简单。您可以在 Haxe 邮件列表中询问。

  • 那么,建议使用哪些框架或语言绑定来编写跨语言库? (2认同)
  • 如果 Haxe 不是为编写跨语言库而设计的,那么是否有更好的工具用于此目的(或者 Haxe 通常是用于此目的的最佳工具)? (2认同)