我有一个相当简单的C例程,我想通过Python访问,使用SWIG:
int routine(char *instring, char *outstring);
输入字符串刚刚传入,这似乎起作用了。outstring返回是指向C例程中固定数组的指针,我的问题是如何使用python接口将python参数传递给它。
当我使用python时,我得到:
>>retstring = "foo"
>>retval = routine("Hello world", retstring)
这(显然)不起作用,因为当作用域返回到提示级别时,值会丢失。但这个程序并没有失败。问题是,我传入的任何OTHER参数都会失败,因为它不被视为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")