问题标签 [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.
c - Vala vapi 文件文档
我想使用 Vala 破解现有的基于 GLib 的 C 项目。
基本上,我正在做的是,在我的构建过程开始时,使用 valac 从我的 .vala 文件生成 .c 和 .h 文件,然后像任何 .c 或 .h 文件一样编译生成的文件。
这可能不是最好的方法,但在大多数情况下似乎工作正常。
我的问题是我很难从我的 Vala 代码中访问我现有的 C 代码。是否有捷径可寻?
我已经尝试编写自己的 .vapi 文件(我对 vala 附带的工具没有任何运气),但我找不到任何关于如何编写这些文件的体面文档。
有吗?我需要这些文件之一来调用现有的 C 代码吗?
sql - 是否有 Microsoft SQL Server 绑定?
有人可以指导我使用任何版本的 SQL Server 吗?
我目前正在使用 2003 版。
gnome - GTK+ 3 的 VAPI 问题
我正在尝试在 ArchLinux 上编译一些 Vala,当我尝试包含 packagegtk+-3.0
时,似乎 GDK 和 GTK+ 2.0 也被包含在内;valac --pkg gtk+-3.0 test.vala
给出以下错误:
有没有办法指定不包括gtk+-2.0
或valac
忽略这些错误?
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 的情况下自动生成自省注释?
谢谢。
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 修复了它。
vala - 在 Vapi 定义中用于通过引用传递数组的参数
我有以下使用 libmodbus 使用 ModbusTCP 读取单个设备寄存器的 C 代码:
现在尝试使用我生成的 Vapi 将其切换到 Vala,new 和 read 的内容是:
翻译后的 Vala 程序是:
巧合的是,当我将它编译成 C 代码,然后使用 gcc 编译成二进制文件时,我得到了错误:
这并不奇怪。但我不确定我应该如何修改 Vapi 内容以更接近 libmodbus 标头中的原型:
我尝试了混合使用数组选项并使用“out”,但一次只能获得一个双字节寄存器。
感谢您的任何建议。
binding - 如何在 vapi 文件中编写 void 指针类型定义?
我正在尝试编写一个 VAPI 文件来使用 unixODBC,其中一个函数被称为SQLAllocHandle
:
这是我第一次尝试编写 vapi 文件,但目前文档很少(Vala vapi 文件文档)。
调用代码应该与此类似:
特别是我想知道如何转换SQLHANDLE
实际上只是一个void *
(不透明的 void 指针)的类型。
换句话说,该UnixOdbc.Handle
类型在 vapi 文件中会是什么样子?
我目前的做法是假装它很长:
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
vala - 如何绑定延迟输出参数?
通常 C API 指针被转换为Vala 绑定中的一个arrays
或参数:out
我现在遇到了一个将指针用作延迟out
参数的情况。
每次fetch ()
调用时,数据都会传输到buffer
和length
。
在 Vala 中绑定这样的 API 的最佳方法是什么?
我不认为我可以out int length
在这里使用?
此外,我必须确保绑定的数据在整个绑定期间都可用。我怎样才能做到这一点?
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++。