Уведомления

Группа в Telegram: @pythonsu

#1 Июль 16, 2013 10:11:50

esp23
Зарегистрирован: 2013-07-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль Расширения

мне нужно написать модуль расширения на си.
Допустим модуль simple который имеет функцию test.

simple.c:

PyObject *
test(PyObject *self,PyObject *args)
{
return Py_BuildValue(“”)
}

так вот когда в питоне я импортирую модуль и вызову функцию test могу ли я передать в качестве параметра спиок и как его в си функции привести к указателю типа unsigned char.
Вообще функция будет записывать в символьное устройство, я хочу передавать в качестве параметра в питоне спиок и длину и в си получать указатель на unsigned char и длину что бы воспользоваться функцией write!

Офлайн

#2 Июль 16, 2013 18:38:16

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Модуль Расширения

Я бы посоветовал использовать модуль CTypes, а simple определить в динамически подгружаемой библиотеке.

По поводу передачи длины - передаете c_int
Сам массив удобно передавать так:

import numpy as np
from ctypes import c_int
n=200
arr=np.zeros(n,dtype='i')
arr[0]=2
you_c_function(c_int(n),arr.ctypes.data)



Отредактировано doza_and (Июль 16, 2013 18:43:25)

Офлайн

#3 Июль 18, 2013 13:59:29

esp23
Зарегистрирован: 2013-07-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль Расширения

Вот еще вопрос!
когда собираю модуль python setup.py build то модуль собирается,все нормально . как бы его собрать под arm ядро, пробовал указать так python setup.py build -carm-none-gnueabi-gcc
пишет вот что
error: don't know how to compile C/C++ code on platform ‘posix’ with ‘arm-none-linux-gnueabi-gcc’ compiler.
Спасибо заранее!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version