Python SWIG返回字节,而不是带有typemap的字符串

Python SWIG返回字节,而不是带有typemap的字符串,python,swig,swig-typemap,Python,Swig,Swig Typemap,我的C库中有两个函数: void passBytes(char *data, int size); void returnBytes(char **data, int *size); //dynamically allocates 我使用以下方法成功实现了第一个函数的包装器: 但是我不知道如何用实现第二个包装器。无法使用SWIG\u PYTHON\u STRICT\u BYTE\u CHAR,因为我需要混合使用str和字节您就快到了 %typemap(in, numinputs=0) (cha

我的C库中有两个函数:

void passBytes(char *data, int size);
void returnBytes(char **data, int *size); //dynamically allocates
我使用以下方法成功实现了第一个函数的包装器:

但是我不知道如何用实现第二个包装器。无法使用
SWIG\u PYTHON\u STRICT\u BYTE\u CHAR
,因为我需要混合使用
str
字节

您就快到了

%typemap(in, numinputs=0) (char **data) (char *temp) {
  $1 = &temp;
}
%typemap(argout) (char **data) {
  if (*$1) {
    $result = PyUnicode_FromString(*$1);
    free(*$1);
  }
}

请注意,这两个类型映射组合在一起就完成了这项工作。如果字符数组以null结尾,则不需要长度。将创建参数
temp
,并将对该参数的引用传递给分配数组的C函数。

噢,argout。。。我应该更彻底地阅读这些文件。非常感谢。
%typemap(in, numinputs=0) (char **data) (char *temp) {
  $1 = &temp;
}
%typemap(argout) (char **data) {
  if (*$1) {
    $result = PyUnicode_FromString(*$1);
    free(*$1);
  }
}