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