【发布时间】:2013-05-28 22:12:22
【问题描述】:
我有一个使用 SDL 的绘图程序,用 C++ 编写。我想只在 Vala 中创建一个图形界面,并用它来调用程序中的函数(函数已准备好使用,我只想从 GUI 调用它们)。我一直在寻找 VAPI 的解决方案,并且我正在考虑使用 GObject,但我不能同时接受两者。有没有人做过类似的事情,你能建议我解决我的问题吗?
【问题讨论】:
-
是什么让您认为您不能将基于 GObject 的 API 与 VAPI 绑定? 大部分可用的 VAPI 就是这样做的...
-
我尝试将 Vala 代码编译为 C,然后创建一个目标文件。我从 C++ 代码创建了一个目标文件。然后我尝试在 g++ 中用
-lglib和-lgobject链接两个文件。不幸的是,将 Vala 代码中的对象与用 C++ 编写的函数链接会返回错误。 -
你能把错误贴在这里吗?
-
您不能将 Vala 代码直接链接到 C++,但是为 C++ 代码创建一个 C 包装器通常非常简单。您只需要注意将 C 链接用于要公开给 C/Vala 的符号。如果您想要一个示例,请查看 leveldb 源代码。具体来说,
include/leveldb/c.h和db/c.cc。 -
如果您使用 C++ 链接,您可能会看到该错误。确保在适当的时候使用 extern "C"。 en.wikipedia.org/wiki/…