Предупреждение: я довольно новичок с Cython. : D У меня есть следующие фрагменты кода:Cython: невозможно преобразовать объект Python в структуру
my_structs.h:
typedef struct Dataset{
int lines;
char **tid;
}Dataset;
myiolib.pyx:
from libc.stdlib cimport malloc
from libc.string cimport strcpy
from cpython.string cimport PyString_AsString
cdef extern from "my_structs.h":
cdef struct Dataset:
int lines
char **tid
cdef Dataset readDataset(TID_name):
cdef:
int i, line_count=0
Dataset instance
with open(TID_name, 'rU') as file_iter:
for line in file_iter:
line_count=line_count+1
instance.tid = <char **>malloc(line_count * sizeof(char *))
i = 0
with open(TID_name, 'rU') as file_iter:
for line in file_iter:
instance.tid[i] = <char *>malloc((len(line)+1) * sizeof(char))
strcpy(instance.tid[i], PyString_AsString(line.strip()))
i += 1
instance.lines = line_count
return instance
mytest.pyx:
import myiolib
cdef extern from "my_structs.h":
cdef struct Dataset:
int lines
char **tid
def test():
cdef Dataset D
D = myiolib.readDataset("test.dat")
# Do something...
# Free memory (?!)
тест. py:
import mytest
mytest.test()
Когда я печатаю: cython -a mytest.pyx, он говорит: «Невозможно преобразовать объект Python в« Набор данных », , указывая на D = myiolib.readDataset (« test.dat »). Почему? Я не понимаю ... Что я делаю неправильно?
Вот и все! Большое спасибо. Извините, что не дал setup.py. Я полностью забыл об этом! : / – user3674296