Найти - Пользователи
Полная версия: Как передать указатель типа void* из кода на С++ в код на Python?
Начало » Python для новичков » Как передать указатель типа void* из кода на С++ в код на Python?
1
ntohins
Насколько я понял, можно легко преобразовать стандартные типы при помощи функции Py_BuildValue.
Вопрос: как передать в Питоновский код указатель на void, т.е на произвольный тип, и чтобы потом Питоновский код отдал этот указатель обратно в С++ код.
В строке формата Py_BuildValue есть что-то похожее, что мне нужно:

O& (object)
Convert anything to a Python object through a converter function. The function is called with anything (which should be compatible with void *) as its argument and should return a “new” Python object, or NULL if an error occurred.

но непонятно, что за функция converter и т.д.
Приводить указатель к типу int мне кажется небезопасно, а привлекать ctypes для этого - еще больший гемор.

Как правильно сделать?
ntohins
Нашел решение
Специально для этого используется тип PyCObject (или PyCapsule в последних версиях), и функция, создающая этот тип
PyObject* PyCObject_FromVoidPtr( void* cobj, void (*destr)(void *))
Вопрос снят.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB