问题标签 [swig]

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 投票
1 回答
164 浏览

c - 将 C 中的 Ruby 块与 SWIG 一起使用

我正在使用 SWIG 在 Ruby 中包装 C 接口。给定两个结构

如何创建一个#each产生当前顶点的方法,以便我可以在 Ruby 中处理它。目前我的 SWIG 接口文件包含类似

在此先感谢您的帮助。

--t6d

0 投票
2 回答
580 浏览

swig - SWIG 在 AIX 上崩溃(使用 python,可能还有其他所有 SWIG 支持)

SWIG 可以在 AIX 上轻松编译和安装。不幸的是,一个简单的SWIG hello world(它也可以编译——但不是那么容易)会因分段错误或非法指令而崩溃(取决于编译/链接器过程的一些细节)。gcc 和 xlc(IBM c 编译器)都会发生这种情况。我只尝试了本地 AIX 链接器 ld,因为我的系统上没有安装同音词 GNU ld。

文件:example.c

文件:example.i

生成文件片段:

链接器步骤是有问题的。如果您按照教程中的示例进行操作,则应该这样做

不幸的是,由于几个原因,这不起作用。我相信 IBM/AIX 和开源社区对“共享库”的含义有着截然不同的想法。您从 AIX 本机链接器获得的最常见的共享对象 (so) 中根本没有任何符号(实际上大小小于 1kB)。从链接器获取损坏的输出也很容易(在这种情况下,链接时会出现很长的未解析符号列表,如下所示):

做一个应该做的事情,很明显解决方案是使用各种链接器选项进行黑客攻击,-berok, -bnoentry, -bexpall, -brtl, -bshared, -bM:SRE, -bexpfull. 事实上,可以找到一些组合来创建非空的 .so 库,而不会产生错误。上面的 Makefile 片段中报告了其中一种组合(还有其他组合)。不幸的是,它们都在以下两种模式之一中失败!

或者

使用 gcc 或不同版本的 python(我们有 7 个!) 32 位或 64 位不会改变任何东西:您可以找到一个“好的”链接选项,但它在运行时崩溃。如何解决这个问题?

0 投票
1 回答
1031 浏览

c++ - 指向 swig(或 Boost::Python)中的成员的指针

我从我的 C++ 应用程序为 python 做了一些绑定。

问题是我使用指向成员的指针(它用于计算最短路径并给出属性以最小化作为参数)。

这是 C++ 签名:

这就是我所做的(根据我在文档中的理解):

这就是我从 python 调用我的函数的方式:

这是我得到的错误:

我有一个使用默认第四个参数的重载方法,它工作得很好。

那么是否可以在 swig 中使用指向成员的指针?如果是,有什么诀窍?如果不是,那么最优雅的工作方式是什么?

感谢您的帮助!

更新:如果有人知道 Boost::python 是否确实做到了,我会切换到它。

0 投票
3 回答
562 浏览

lua - Swig 和 Lua:如何将 Lua 文件映射到 FILE*

我有一个作为参数的 C 函数,FILE*我想在 Lua 中使用这个函数,传递 Lua 文件。我想我需要一个%typemap。怎么写?(我刚开始学习Lua)。

0 投票
2 回答
1242 浏览

c++ - 带有 C++ 基类的 Python 子类

我有一些通过SWIG接触过Python的 C++ 。其中有一个具有单个纯虚函数的基类。

在 Python 中,我导入了我的模块并定义了一个使用抽象类作为基础的类。

在该模块中也是一个管理器类,我想将我新定义的类添加到管理器中。

添加的定义:

没有像我预期的那样工作:

我错过了什么?似乎不确定我的 Foo 类是“mybase”。我尝试在 Python 中添加对基类构造函数的调用,但这不起作用,说该类是抽象的。

0 投票
2 回答
2534 浏览

c++ - 使用 SWIG 在 Lua 中实现和继承 C++ 类

是否可以使用LuaSWIG并说一个 IInterface 类来实现该接口并在 Lua 中实例化它?如果是这样,它会怎么做?

0 投票
1 回答
149 浏览

python - 带有 Python 绑定的 C 库,两者都想渲染

我正在用 Python 画一些流体动力学。过了一会儿,我正在寻找更快的速度,所以我用 C 重写了实际的逻辑并建立了一些 Python 绑定(使用SWIG)。

我现在的问题是我没有如何以一种好的方式渲染它。逻辑是逐像素运行的,所以我想要跟踪和渲染像素。

如果我尝试在接受 a 的 C 库中创建一个函数,Python 会给我一个TypeErrorSDL_Surface*,我可能有点天真地认为 PyGame 很容易将它直接映射到 SDL。如果我让 C 库“init”返回一个SDL_Surface*.

有什么好方法可以做到这一点?如果我只渲染 C lib 中的所有内容,那将不是问题。但我想在那里放一些 GUI(使用 Python)。C 库已经跟踪哪些像素是“脏的”。我是否应该公开该列表并让 Python 循环遍历它,为每个脏像素调用一个函数?看起来很糟糕,因为这些巨大的循环正是我想用 C 重写部分应用程序的确切原因。

在任何人建议之前,boost.python现在安装起来有点重(因为我在 Windows 上),所以我暂时只使用 SWIG(除非有人有聪明的方法来安装“just” boost 。Python?)。

我希望这里有一颗灵丹妙药。如何制作 C 库、运行 SDL、与 Python 共享渲染目标、运行 PyGame?

0 投票
3 回答
2085 浏览

c++ - 使用 SWIG 包装 Lua 对象以在 C++ 中使用

目前我知道如何使用 SWIG 绑定在 Lua 中实例化和传递 C++ 对象,我需要的是相反的。

我正在使用 Lua & C++ & SWIG。

我有 C++ 中的接口和 lua 中的对象,它们实现了执行相同工作并具有相同结构的方法。我希望能够在 lua 中实例化这些对象,然后使用指向它们类似的接口的指针在 C++ 中传递它们。

因此,我可以想象创建一个接口的 c++ 实现,它将充当所述 lua 对象的处理程序,但我不知道如何做到这一点。该类将充当 C++ 世界中的 lua 对象代表或代理。

为了澄清,我将从以下示例代码开始,该示例代码用于回答我提出的类似问题:

C++ 代码:

卢阿代码:

现在假设我在 C++ 中有一个名为 Bank 的类:

我在这里想要的是一种在lua中执行以下操作的机制:

如果我需要采取额外的步骤,例如实例化一个 C++ 类以充当代理并将其传递给带有所有 lua 函数等的 lua 表,我可以想象它看起来像这样:

C++ 代码:

卢阿代码:

这里的问题是我不知道如何实现 ProxyAccount 类,甚至不知道 settable 的函数签名会是什么样子......

0 投票
1 回答
284 浏览

python - 为什么 SWIG 在链接到 gtkglext 时会导致 Python 崩溃?

我使用 SWIG 链接到 gtkglext 的任何内容都会在退出时使 Python 崩溃。为什么会崩溃?

测试.i:

会议:

有任何想法吗?谢谢...

0 投票
2 回答
6006 浏览

c++ - 从 C++ 调用 Lua 表中的函数

例如,我有一个Lua表/对象:

这个 Lua 表里面有一个叫做 的函数chew,它接受一个参数

我也使用过SWIG,例如一个类CPerson

我可以从 Lua 获得这个对象的一个​​实例:

我需要能够做的是以下 Lua 代码:

哪里person:eat会调用表chew中的函数bannana,传递一个参数。

既然是用 C++ 实现的,假设类已经有一个 Lua 状态指针CPerson,需要做哪些改变来实现?Eat()CPerson

Edit1:我不想知道如何将 C++ 类绑定到 Lua,我已经有 SWIG 为我做这件事,我想知道如何从 C++ 调用 Lua 表中的 Lua 函数。

Edit2:CPersonbannana表都是通用示例,可​​以假设CPerson该类已经有一个 LuaState 指针/引用,并且该Eat方法的函数签名可以由回答的人更改。