我正在考虑使用Haxe的跨语言能力,但不确定它是否是最适合这项任务的.我将编写一个通用库,它应该能够在目标语言中使用并记录下来(能够应用像doxygen这样的东西).换句话说,我想在Haxe中编写一个通用库,输出c ++代码(和java一起完成),并让其他程序员可以访问它.(不仅仅是C +编译器可读)这是这项任务的最佳选择,或者如果我为每种语言编写一个版本的库,会不会更好?
当然有可能,即使根据所选平台可能存在一些尴尬.
在JavaScript,neko和Flash上,生成的代码非常接近原生代码,人们将能够使用它,甚至不知道它是在Haxe中生成的.
在PHP上,我恐怕我不太清楚它是如何工作的.但是有一些命名空间黑客有点尴尬,但我认为这些可以通过用手写代码包装库来解决.
在C++上,如果你不介意使用一些样板代码来使反射工作,它将大部分正常工作.它有一个非标准的处理构造函数的方式,而且你应该非常小心,因为它附加了一个gc,我不知道它处理外部代码持有它不知道的引用的程度.
关于新目标 - C#和Java将与本机代码100%互操作.大多数Haxe功能都映射到平台的本机功能,但代理除外.但是如果你没有在你的界面中公开代表,那就没问题了.它们还会生成一些样板代码,以便在这些平台上实现快速反射,但如果您知道自己在做什么,就会有一些方法可以禁用它.
Haxe 并不是为编写跨语言库而设计的,尽管它可以做到,并且我已经看到了一些它有效的示例:
然而,特别是对于 C++ 来说,由于hxcpp生成了许多 Haxe 特定的东西,包括 GC,它可能需要大量的清理工作,或者使用起来并不简单。您可以在 Haxe 邮件列表中询问。