Я ищу простой способ открыть экземпляр класса С++ для встроенного интерпретатора на основе python.
- У меня есть библиотека С++. Эта библиотека завернута (с помощью swig на данный момент), и я могу использовать ее из интерпретатора python
- У меня есть основная программа С++, которая инициализирует класс Foo из моей библиотеки и внедряет интерпретатор python
Я бы хотел показать мой мир С++ в Foo для мира python (и рассматривается как класс Foo).
Возможно ли это, если да, как?
Я думаю, что это почти как в первом ответе: boost:: python:: ptr или PyInstance_New использование
Я предполагаю, что это означает, что я должен использовать boost.Python
для переноса моей библиотеки?
Моя единственная цель - манипулировать моим С++-экземпляром Foo во встроенном интерпретаторе python (не уверен, что это можно сделать с помощью предыдущего метода).
Надеюсь, я поняла, спасибо за вашу помощь.
Обновление
Спасибо за ваши ответы. На самом деле, я уже выставил свой класс Foo на python (с swig).
Что у меня:
мой класс Foo:
class Foo{...};
моя обернутая библиотека (включая класс Foo), подвергнутая python: поэтому я могу запустить интерпретатор python и сделать что-то вроде этого:
import my_module
foo=my_modulde.Foo()
Что я хочу:
Наличие основной программы на С++, которая внедряет интерпретатор python и управляет переменными мира С++.
int main(int argc, char **argv)
{
Foo foo; // instanciates foo
Py_Initialize();
Py_Main(argc, argv); // starts the python interpreter
// and manipulates THE foo instance in it
Py_Finalize();
return 0;
}
Теперь понятно?:)