gpt4 book ai didi

python - 通过 SWIG 在 python 函数中使用 GList 数据类型

转载 作者:行者123 更新时间:2023-11-30 15:48:23 25 4
gpt4 key购买 nike

我正在创建一个 python 脚本,它通过 SWIG 调用一些 C 函数。

我在调用大多数函数时都没有遇到问题,但一个特定函数采用 GList 数据类型作为参数:

C 函数的定义如下:

void some_function(GList *guid_list)

我试图通过它的 SWIG 创建的 python 模块来调用它

some_list = ['a', 'b', 'c']
module_from_swig.some_function(some_list)

但出现以下错误:

Traceback (most recent call last):
.
.
.
File "/usr/local/lib/python2.7/dist-packages/module_from_swig.py", line 1828, in some_function
return _module_from_swig.some_function(*args)

TypeError: in method 'some_function', argument 1 of type 'GList *'

我假设我需要以某种方式将 python 列表转换为 Glist,但不确定如何去做。任何帮助将不胜感激。

最佳答案

首先,您的 SWIG 接口(interface)文件需要 GList 的定义,然后您可能能够使用最小的 SWIG 文件,例如:

%module MyModule

%inline %{
#include "Glist.h"
#include "functions.h"
%}

并使用如下函数:

>>> import MyModule
>>> glist = MyModule.GList()
>>> glist.some_field = some_value
>>> glist.some_other_field = some_value
>>> MyModule.some_function(glist)

这很模糊,但没有太多可说的。如果GList很复杂,则可能需要编写typemap。提供函数和头文件的简单示例以及您正在使用的 SWIG .i 文件(理想情况下,它可以编译并演示问题),您将获得更好的反馈。

关于python - 通过 SWIG 在 python 函数中使用 GList 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16830907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com