Здравствуйте, Vladimir Prus, Вы писали:
VP>Здравствуйте, A.A.L., Вы писали:
AAL>>Я пытаюсь интегрировать ActivePython 2.4. в С++.
AAL>>Задача приблезительно такая: есть с++ класс, есть его объет. У класса есть метод. который по строке текста запускает интепритатор питона.
AAL>>Причем в этой строке текста надо иметь возможность вызывать методы и самого этого С-шного класса
AAL>> Py_Initialize();
AAL>> PyObject *m = Py_InitModule("test", EmbMethods);
AAL>> PyObject *c_api_object = PyCObject_FromVoidPtr((void *)this, NULL);
AAL>> if (c_api_object)
AAL>> {
AAL>> PyModule_AddObject(m, "MyObj", c_api_object);
AAL>> PyRun_SimpleString(script);
AAL>> }
AAL>> Py_Finalize();
VP>...
AAL>>компиляия проходит без ошибок/предупреждений, но во время исполнения имеем
AAL>>[code]
AAL>>Traceback (most recent call last):
AAL>>File "<string>", line 6, in ?
AAL>>AttributeError: 'PyCObject' object has no attribute 'GetI'
AAL>>[6597 refs]
VP>Из документации:
VP>A CObject is a Python data type which stores a pointer (void *). CObjects can only be created and accessed via their C API, but they can be passed around like any other Python object.
VP>То есть, CObject невозможно использовать из Python. Более того, для решаемой задачи нет простого решения. В С++ невозможно определить
VP>список методов объекта, чтобы экспортировать их в Python. Я бы порекомендовал Boost.Python: http://boost.org/libs/python
Извените Владимир, возможно вопрос ламерский, но
дело в том ,что мне надо вызывать интерпритатор питона из метода класса, так что бы он мог спокойно обращатся к другим членам класса ( как к свои "внутренним" методам).
Я не совсем представляю как это сдулать с boost (Я только начала с ним разбераться).
Если не сложно, плиз приведите хоть приблезительный алгоритм действий.

Заранее благодарна