0
我遇到了一個問題,生成一個與底層C代碼的Python接口。 我有下面的代碼片段:SWIG從C返回無符號字符*到Python
prov.h
prov.c
#include "prov.h"
unsigned char *out()
{
unsigned char *bytes="Hello";
unsigned char *data=NULL;
data=calloc(6,sizeof(char));
if(data) {
strncpy(data,bytes,6);
}
return data;
}
prov.i
%module prov
%{
#include "prov.h"
%}
unsigned char *out();
我產生了。所以作爲如下所示:
$ swig -python prov.i
$ gcc -fpic -c prov.c prov_wrap.c -I/usr/include/python2.7
$ gcc -shared prov.o prov_wrap.o -o _prov.so
$ python
Python 2.7.3 (default, Jun 22 2015, 19:33:41)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import prov
>>> s=prov.out()
>>> s
<Swig Object of type 'unsigned char *' at 0x7fb241dbff90>
現在的問題是,當我嘗試從我的C函數查看返回的字符串時,它似乎沒有將其顯示爲python字符串對象(我期望在打印時輸出應該是'Hello 「)。任何人都可以請幫助我與返回無符號字符*到Python的調用代碼?