问题标签 [vapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
7222 浏览

c - Vala vapi 文件文档

我想使用 Vala 破解现有的基于 GLib 的 C 项目。

基本上,我正在做的是,在我的构建过程开始时,使用 valac 从我的 .vala 文件生成 .c 和 .h 文件,然后像任何 .c 或 .h 文件一样编译生成的文件。

这可能不是最好的方法,但在大多数情况下似乎工作正常。

我的问题是我很难从我的 Vala 代码中访问我现有的 C 代码。是否有捷径可寻?

我已经尝试编写自己的 .vapi 文件(我对 vala 附带的工具没有任何运气),但我找不到任何关于如何编写这些文件的体面文档。

有吗?我需要这些文件之一来调用现有的 C 代码吗?

0 投票
2 回答
202 浏览

sql - 是否有 Microsoft SQL Server 绑定?

有人可以指导我使用任何版本的 SQL Server 吗?

我目前正在使用 2003 版。

0 投票
2 回答
945 浏览

gnome - GTK+ 3 的 VAPI 问题

我正在尝试在 ArchLinux 上编译一些 Vala,当我尝试包含 packagegtk+-3.0时,似乎 GDK 和 GTK+ 2.0 也被包含在内;valac --pkg gtk+-3.0 test.vala给出以下错误:

有没有办法指定不包括gtk+-2.0valac忽略这些错误?

0 投票
2 回答
854 浏览

introspection - Vala VAPI 和 GObject Introspection 有什么关系?

首先,一些上下文:我是一名 Python 开发人员,他使用 PyGObject 编写了一个中型应用程序,利用 GObject Introspection 来访问 GSettings 等内容。我的一些 Python 对象实际上是 GObject.GObject 的子类,所以我是相当广泛地使用 GObject。

最近,某个库引起了我的注意,它在 GObject 中包装了一个 C 库(gexiv2,由 Shotwell/Vala 使用),但是它目前不支持自省。我有兴趣为 gexiv2 添加内省支持,以便我可以从 Python 访问它,但我什至不知道从哪里开始讨论这个主题。

当我研究自省和 VAPI 时,我看到很多文档都提到了 VAPI 可以从自省注释自动生成的事实......但是一个已经有 VAPI 但没有自省的项目呢?是否可以在给定 VAPI 的情况下自动生成自省注释?

谢谢。

0 投票
1 回答
1555 浏览

vala - 为什么 webkit-1.0 和 gtk+-3.0 在 .vapi 文件中有 900 多个相同的符号

正如标题所说,我的问题是我尝试同时使用 gtk 3 和 webkit 1。

我正在关注这个例子https://live.gnome.org/Vala/WebKitSample

除了我使用的是 gtk 3 而不是 2。

我正在使用 valac 0.16.0

我现在注意到错误是 Gdk 2 和 Gdk 3 相同的符号。

这似乎是解决我的问题链接的一种方法, 但它是非标准的。

没关系,我已经用捆绑的 webkitgtk 修复了它。

0 投票
1 回答
382 浏览

vala - 在 Vapi 定义中用于通过引用传递数组的参数

我有以下使用 libmodbus 使用 ModbusTCP 读取单个设备寄存器的 C 代码:

现在尝试使用我生成的 Vapi 将其切换到 Vala,new 和 read 的内容是:

翻译后的 Vala 程序是:

巧合的是,当我将它编译成 C 代码,然后使用 gcc 编译成二进制文件时,我得到了错误:

这并不奇怪。但我不确定我应该如何修改 Vapi 内容以更接近 libmodbus 标头中的原型:

我尝试了混合使用数组选项并使用“out”,但一次只能获得一个双字节寄存器。

感谢您的任何建议。

0 投票
1 回答
453 浏览

binding - 如何在 vapi 文件中编写 void 指针类型定义?

我正在尝试编写一个 VAPI 文件来使用 unixODBC,其中一个函数被称为SQLAllocHandle

这是我第一次尝试编写 vapi 文件,但目前文档很少(Vala vapi 文件文档)。

调用代码应该与此类似:

特别是我想知道如何转换SQLHANDLE实际上只是一个void *(不透明的 void 指针)的类型。

换句话说,该UnixOdbc.Handle类型在 vapi 文件中会是什么样子?

我目前的做法是假装它很长:

0 投票
1 回答
201 浏览

vala - free_function 可以是静态类方法吗?

这是如何在 vapi 文件中编写 void 指针类型定义的后续问题?

我现在有四个几乎相同的 es,它们代表使用 unixODBCs函数[Compact] class分配的句柄。SQLAllocHandle

第一个(用于 ENV 类型句柄)如下所示:

这不编译。

是否可以使用静态类方法作为free_function?

如果没有,是否至少有一种方法可以free_function在 vapi 文件中编写自定义?

我需要一个自定义函数,因为该SQLFreeHandle函数将句柄类型和句柄作为参数。

从 vapi 用户的角度来看,真正重要的是:

唯一的其他解决方案是[SimpleType] struct按照 apmasell 在原始问题中的建议使用 a 。SQLHANLDE这将隐藏 a确实是引用类型的事实。

我当前实现的完整代码可在线获取: https ://github.com/antiochus/unixodbc-vala/tree/0486f54dc3f86d9c8bf31071980e4f171aca9591

0 投票
1 回答
94 浏览

vala - 如何绑定延迟输出参数?

通常 C API 指针被转换为Vala 绑定中的一个arrays或参数:out

我现在遇到了一个将指针用作延迟out参数的情况。

每次fetch ()调用时,数据都会传输到bufferlength

在 Vala 中绑定这样的 API 的最佳方法是什么?

我不认为我可以out int length在这里使用?

此外,我必须确保绑定的数据在整个绑定期间都可用。我怎样才能做到这一点?

0 投票
1 回答
3016 浏览

vala - 如何创建和使用 vapi 文件?

我想制作一个自定义的 vapi 文件,我有基本的东西,但我显然错过了一些东西,我找不到任何地方如何正确地做到这一点。我的主要目标是使用libtorrent创建一个 torent 应用程序,并使用 vala 和 gtk 创建 GUI(前端?)。

我有一个 c_func_head.h:

c_functions.c:

vala_p.vapi:

最后是 vala_program.vala:

如您所见,我也使用了 extern,它可以使用,但我想使用 vapi 文件。

我编译(一切都在同一个文件夹中):

valac vala_program.vala --vapidir=vala_p.vapi -o mustrun

错误是:

使用 MyFunc 找不到命名空间名称“MyFunc”;

还有一件事。是否可以为 libtorrent 进行绑定?它使用 c++,我想我也必须使用 c++。