我正在使用 Vala 创建一个 Linux 应用程序。
为了解析 JSON,我想使用 C,因为 Vala 库对我来说很复杂,而且它能够运行 C 函数。该函数应返回将在 Vala 代码中使用的字符串数组。
主要问题是,与 Vala 不同,C 并不真正知道什么是字符串数组。我发现字符串数组可以声明为
char*[]
。
我尝试:
char*[]
作为字符串数组,但这没有帮助。char* []
到Vala中的字符串数组,但我得到了很多编译错误。我假设 C 中的
char*[]
和 Vala 中的 char*[]
的工作方式不同。
这取决于你想做什么; Vala 实际上在如何绑定到 C API 方面非常灵活,因为它被设计为与不了解 Vala 的 C API 一起使用。
我的建议是在 Vala 中编写你想要的 API,然后使用
valac -C foo.vala
将 Vala 转译为 C 代码,在这里你可以轻松地看到它期望的 API。不过,基本上,对于像 string[] foo()
这样的 Vala API,预期的 C 签名将类似于 gchar** foo(gint* array_length)
。