Ошибка выполнения: ошибка ffi_prep_cif
Я работаю над проектом, где я должен использовать ctypes для вызова нескольких функций C из файла C в скрипте Python. Я создал общий объект из файла C и использовал его в своем скрипте Python.
Я определил структуру C в ctypes, но я получаю RuntimeError
во время работы моего скрипта Python. Ошибка:
ffi_prep_cif failed
Я включил заголовок ffi.h в мой C-файл и снова создал общий объект, но я все еще получаю ту же ошибку. Какие-либо предложения?
Код, который я написал для оболочки в Python, выглядит следующим образом:
if __name__ == "__main__":
lib_fib = ctypes.CDLL('./lib6.so')
class model_t(ctypes.Structure):
_fields__ = [('weight', ctypes.POINTER(ctypes.c_float)),
('threshold', ctypes.c_float)]
data = [1.0, 2.0, 3.0]
f1 = 2.5
l = len(data)
m = model_t()
m.weight = (ctypes.c_float * l)(*data)
m.threshold = (ctypes.c_float * 1)(l)
chr_p = ctypes.POINTER(ctypes.c_char)
c = 'abcd'
l1 = len(c)
chr_p = (ctypes.c_char * l1)(*c)
out = lib_fib.new_classify(m, chr_p)
print out`
Я пытаюсь заменить функцию Python под названием self.abc_prob()
с С new_classify()
, Это часть моей функции C, которую я хочу вызвать с помощью ctypes:
extern double
new_classify(model_t *model_ptr, char *s)
{
char bigram[3]; /* Used only when debugging */
float *model_weights = model_ptr->weights;
float threshold = model_ptr->threshold;
/* ... */