slav0nic
посмотри для примера http://slav0nic.xss.ru/projects/procfs.tar.gz
со времён “книги Лутца” python API вродже как поменяль (помню долго парился не понимая чего не компилится=) )
думаю простой срр легко “портировать”, просто сделать каркас и ретурны “сделать в питон” и всё
Порылся я в энтих исходниках и наваял примерно такое:
class MyClass {
/* */
public:
/* */
PyObject* Room(PyObject* self,PyObject* args);
};
А вот код функции:
PyObject* MyClass::Room(PyObject* setf,PyObject* args)
{
int r, c;
PyArg_Parse(args, “(ii)”, &r, &c);
switch (type) {
case ‘C’:
return Py_BuildValue(“s”,Table);
break;
case ‘N’:
return Py_BuildValue(“i”,atoi(Table));
case ‘F’:
return Py_BuildValue(“f”,atof(Table));
break;
default:
return Py_BuildValue(“s”,“Unknown type!”);
break;
}
}
Собирается успешно. (SWIG)
Из под Пайтона работают все функции класса, кроме описаной выше, при вызове которой рушится программа
Я так полагаю, что это из-зи отсутсвия таблицы регистрации (PyMethodDef) и инициализации модуля (PyInintModule())
Но где мне их прописывать (имеется ввиду в классе)?
Или ошибка в чем другом?
P.S.: если объявляю в классе static PyObject* Room(PyObject* self,PyObject* args); то ругань при компиляции огромная