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

时间:2010-12-16 06:11:56

标签: haxe

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

2 个答案:

答案 0 :(得分:7)

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

在JavaScript,neko和Flash上​​,生成的代码非常接近原生代码,人们可以在不知道它是在Haxe中生成的情况下使用它。

关于PHP,我担心我不太清楚它是如何工作的。但是有一些命名空间的黑客攻击有点尴尬,但我认为这些可以通过用手写代码包装库来解决。

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

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

答案 1 :(得分:3)

Haxe不是为编写跨语言库而设计的,虽然它可以完成,但我已经看到了一些可行的例子:

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

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