Я написал код для определения нового типа в расширении Python C (MyStatus). Я написал код C для определения распределения, освобождения и т. д., как указано на этой странице.
Я смог скомпилировать модуль и использовать его из python.
Теперь я пытаюсь использовать этот новый тип в другом расширении Python C (TestStatus). Мое требование: для этого мне нужен только один .so. Я не хочу использовать MyStatus напрямую из кода Python. Я буду только импортировать TestStatus в свой код, и я хочу инициализировать MyStatus из моего расширения C, написанного для TestStatus.
Я написал такой код для TestStatus
static PyObject * TestStatus_checkPyObject *self, PyObject *args)
{
PyObject * mystatus = NULL;
const char *command;
/* Call the class object. */
mystatus = PyObject_CallObject((PyObject *) &MyStatusType, NULL);
return mystatus;
}
PyMODINIT_FUNC initTestStatus(void)
{
(void) Py_InitModule("TestStatus", TestMethods);
initMyStatus();//This is available in the C code written for MyStatus
}
Я смог создать так, как я упомянул в коде. Но я застрял в настройке переменных для MyStatus, который является целым числом, и char * (PyObject *). Может ли кто-нибудь пролить свет на это, например, правильный ли мой подход и как инициализировать и использовать MyStatus из TestStatus с аргументами.
Я пытаюсь это сделать с Python 2.6.6 на Rhel 6.3.
В MyStatus у меня есть 2 переменные
typedef struct {
PyObject_HEAD
int mStatus;
PyObject *mErrorString;
} MyStatus;
Мне нужно инициализировать то же самое из TestStatus.
.so
файл? Будет ли работать, если вы поместите код обоих модулей в один файл? - Извините, но я так и не понял проблему, поэтому сложно что-то в ней прояснить. - person dastrobu   schedule 25.11.2013