Python SWIG返回字节,而不是带有typemap的字符串
我的C库中有两个函数: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
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);
}
}