gpt4 book ai didi

python - 无法确定从 SWIG(不是 ctypes)C 传递给 python 例程的正确参数

转载 作者:行者123 更新时间:2023-11-30 20:35:53 25 4
gpt4 key购买 nike

我有一个相当简单的 C 例程,我想使用 SWIG 通过 Python 访问:

int routine(char *instring, char *outstring);

输入字符串刚刚传入,这似乎有效。 outstring 返回是一个指向 C 例程中固定数组的指针,我的问题是如何使用 python 接口(interface)将 python 参数传递给它。

当我使用 python 时,我得到:

>>retstring = "foo"
>>retval = routine("Hello world", retstring)

这(显然)不起作用,因为当范围返回到提示级别时该值会丢失。但例行公事不会失败。问题是,我传入的任何其他参数都会失败,因为它不被视为 char *。

除了不返回字符串之外,该例程似乎正常工作。

我不知道该怎么办。我是否必须使用类型映射进行修改才能产生第二次返回?有没有一个例子可以说明这一点?

最佳答案

好的,我让它像这样工作(.i 文件):

%module example
%include cstring.i
%cstring_bounded_output(char *outcs, 1024); // large magic number...
%{
#include "routine.h"
%}

int routine(char *instring, char *outcs);

然后调用(在 Python 中):

import example
retval, restring = example.routine("Hello World")

关于python - 无法确定从 SWIG(不是 ctypes)C 传递给 python 例程的正确参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280022/

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