Здравствуйте, 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();
...
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]
Из документации:
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.
То есть, CObject невозможно использовать из Python. Более того, для решаемой задачи нет простого решения. В С++ невозможно определить
список методов объекта, чтобы экспортировать их в Python. Я бы порекомендовал Boost.Python:
http://boost.org/libs/python