如何返回要在 Vala 代码中使用的 C 字符串数组?

问题描述 投票:0回答:1

我正在使用 Vala 创建一个 Linux 应用程序。

为了解析 JSON,我想使用 C,因为 Vala 库对我来说很复杂,而且它能够运行 C 函数。该函数应返回将在 Vala 代码中使用的字符串数组。

主要问题是,与 Vala 不同,C 并不真正知道什么是字符串数组。我发现字符串数组可以声明为

char*[]

我尝试:

  • 在 Vala 中使用返回的
    char*[]
    作为字符串数组,但这没有帮助。
  • Convert直接从C返回
    char* []
    到Vala中的字符串数组,但我得到了很多编译错误。

我假设 C 中的

char*[]
和 Vala 中的
char*[]
的工作方式不同。

arrays c string vala
1个回答
0
投票

这取决于你想做什么; 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)

© www.soinside.com 2019 - 2024. All rights reserved.