Это обеспечивает библиотеку с состоянием, т. е. большие объемы сложных данных хранятся на стороне C++, API в основном состоит из относительно простых вызовов функций, которые манипулируют/опрашивают состояние модели.
Недавно я разработал еще одно приложение C++ (
Код: Выделить всё
barКод: Выделить всё
fooТеперь я также обернул bar с помощью Swig. У него есть собственный файл *.i.
Это приводит к следующему:
Код: Выделить всё
foo.py
_foo.so
bar.py
_bar.so
Однако, если я одновременно загружаю foo и bar в Python, они, похоже, взаимодействуют и ведут себя странным образом. Похоже, что на стороне C++ они используют одно и то же состояние. Это неожиданно (для меня). Я бы ожидал, что у них будут полностью независимые области памяти, копии кода и т. д.
Мои ожидания ошибочны? Если да, есть ли опция Swig или Python, позволяющая изменить это поведение? Можно ли обернуть часть C++ в дополнительное пространство имен из файла *.i?