这种名为 Vala 的新语言据说类似于 C#,据说比 C++ 或 C 更容易,它在 Linux 上使用 GCC 编译器编译成 C。
听起来很棒。现在我想用它来制作一个 PHP 扩展模块,以便可以在 Vala 中制作慢速 PHP 代码并作为函数导入 PHP。
我如何在 Vala 中做到这一点?甚至可能吗?
这种名为 Vala 的新语言据说类似于 C#,据说比 C++ 或 C 更容易,它在 Linux 上使用 GCC 编译器编译成 C。
听起来很棒。现在我想用它来制作一个 PHP 扩展模块,以便可以在 Vala 中制作慢速 PHP 代码并作为函数导入 PHP。
我如何在 Vala 中做到这一点?甚至可能吗?
我不知道 Vala,但如果你可以调用本机代码,声明 C 结构并将它们作为指向所述本机代码的指针传递,并定义使用 C 调用约定的函数,那应该是可能的。但是用 C/C++ 做这件事肯定会更容易。
编辑:它的主页说
valac 从 Vala 源文件生成 C 源文件和头文件,就像您直接在 C 中编写库或应用程序一样。在 C 应用程序中使用 Vala 库与使用任何其他基于 GObject 的库看起来没有什么不同。不会有 vala 运行时库,应用程序可以使用它们的 tarball 分发生成的 C 代码,因此用户没有额外的运行或构建时依赖项。
所以,虽然这不是确定的,但我会说你可能可以。
您需要使用或编写(如果不存在)您需要使用的 C 库的 VAPI 文件。这很简单,您只需要查看现有示例: http: //live.gnome.org/Vala/Bindings或简单地:http ://git.gnome.org/browse/vala/tree/vapi
我创建了如何使用其他语言的 Vala 库的简单示例:
https://github.com/antono/vala-object
通过 GOobject Introspection 自动生成的 vala 库绑定。
https://live.gnome.org/GObjectIntrospection
使用 gobject-for-php 并免费获取绑定!