我正在尝试使用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);

10-07 13:28