Ecco il mio codice C, ne ho creato una condivisa. Quando carico la libreria condivisa in Python ed eseguo il codice Python di seguito, mi si blocca. Perché?Perché Python si blocca mentre restituisce una stringa C?
extern "C" {
PyObject* foo2(char* b)
{
return Py_BuildValue("s", b);
}
}
Ed ecco quello che sto facendo in Python:
from ctypes import *
d = cdll.LoadLibrary('./foo.so')
d.foo2.restype = c_char_p
v = d.foo2('hello world')
print pythonapi.PyString_Size(v)
Se serve, io sono a python2.6.
'c_char_p' - non significa' char * '? siete ** non ** restituisce un '' char * ... –
perché stai usando 'ctypes' per aprire una libreria che utilizza l'API di Python, invece di fare quella biblioteca un modulo di estensione Python? – interjay