我有一个相当简单的C例程,我希望通过Python访问,使用SWIG:
int routine(char *instring, char *outstring);
输入字符串刚刚传入,这似乎有效。 outtring返回是指向C例程中固定数组的指针,我的问题是如何使用python接口将python参数传递给它。
当我使用python时,我得到:
>>retstring = "foo"
>>retval = routine("Hello world", retstring)
这(显然)不起作用,因为当范围返回到提示级别时,该值会丢失。但例行公事并没有失败。问题是,我传入的任何OTHER参数都会失败,因为它不被视为char *。
除了不返回字符串之外,例程似乎正在运行。
我不确定该怎么做。我是否必须使用类型地图进行修改才能产生第二次回报?有什么例子可以显示这个吗?
答案 0 :(得分:0)
好的,我让它像这样工作(.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")