Получить значение указателя Cython

Я пишу функцию, которая создает массив malloc'd unsigned char * , а затем перенастраивает указатель. В чистом Китоне или С это легко. Все, что вам нужно сделать, это установить тип возвращаемого значения в функцию и вернуть указатель на массив. Готово. Тем не менее, я достиг точки, в которой мне нужно вернуть указатель на массив, созданный в Cython, на Python. Я знаю, что указатель – это просто адрес памяти. Есть ли способ, которым я могу вернуть указатель Cython на Python в качестве объекта python (например, int или hex, потому что адрес памяти по существу является числом), поэтому я могу тогда в основном управлять указателями на python?

Я попытался вернуть значение указателя следующим образом:

 cdef unsigned char array[8] def return_pointer(): return &array 

Это, конечно, не работает, потому что невозможно выполнить преобразование. Cython жалуется на Cannot convert 'unsigned char (*)[8]' to Python object . Какие-либо предложения?

РЕДАКТИРОВАТЬ:

Мне не нужно получать доступ к значению в адресе памяти, на который указывает указатель в Python, только передайте указатель. Затем я планирую использовать указатель на объект Python и вызывать функции c с ним в качестве аргумента.

One Solution collect form web for “Получить значение указателя Cython”

Вы можете указать указатель на соответствующий тип C, который затем должен быть преобразован в целое число Python Cython. Правильный тип C – uintptr_t из <stddef.h> который в Cython будет доступен через from libc.stdint cimport uintptr_t . Разумеется, <uintptr_t>array_or_pointer написан <uintptr_t>array_or_pointer .

  • Функция Cython с матричным входом с переменным размером
  • Wrap C struct с элементом массива для доступа в python: SWIG? Cython? ctypes?
  • Не удается установить Kivy: ошибка Cython / GCC
  • Словарь Python vs C ++ std: unordered_map (cython) vs cythonized python dict
  • Как можно правильно управлять жизненными циклами объектов C ++ в Cython?
  • Каков рекомендуемый способ выделения памяти для типизированной памяти?
  • запуск c ++-кода из python
  • Использование Cython для переноса шаблона c ++ для принятия любого массива numpy
  • Python - лучший язык программирования в мире.