Недавно я обнаружил существование boost-python и был поражен его очевидной простотой. Я хотел попробовать и начал оборачивать существующую библиотеку C ++.
Хотя обернуть вызовы API базовой библиотеки довольно просто (ничего особенного, только обычные вызовы функций и очень распространенные параметры), я не знаю, как правильно обернуть функции инициализации / очистки:
Как бы то ни было, мои Библиотека C ++ требует, чтобы вызывающая сторона сначала вызывала mylib :: initialize ()
при запуске программы и вызывала mylib :: cleanup ()
до ее завершения (на самом деле существует также инициализатор
Как мне обернуть это с помощью boost python?
Заставить пользователя Python вызвать mymodule.initialize ()
и mymodule.cleanup ()
кажется не очень питоническим . Есть ли какой-нибудь способ сделать это автоматически? Идеально, вызов initialize ()
будет выполняться прозрачно, когда модуль импортируется, а вызов cleanup ()
также выполняется при завершении скрипта python.
Есть ли способ сделать это сделай это ? Если нет, какое решение является наиболее элегантным?
Спасибо.