我正在尝试使用SWIG在Python中使用C库。这个C库通过各处的参数传递函数结果。使用在线SWIG手册,我已经成功地将整数函数结果传递给了Python,但是我很难弄清楚如何对字符串执行此操作。
这是我的代码的本质:
myfunc.c:
#include <myfunc.h>
#include <stdio.h>
int mystr(int inp, char *outstr){
outstr="aaa";
printf("%s\n", outstr);
return(0);
}
myfunc.h:
extern int mystr(int inp, char *outstr);
所以基本上我的问题是* outstr的类型映射应该是什么样子。
提前致谢。
最佳答案
看看SWIG手册9.3.4 String handling: cstring.i。这提供了几个与char *
参数一起使用的类型映射。
可能(假设您确实使用了上述注释中提到的strcpy(outstr, "aaa")
)在函数声明之前要在SWIG接口文件中进行设置,例如:
%include <cstring.i>
%cstring_bounded_output(char* outstr, 1024);