6
我最近發現boost-python的存在,並且因爲它顯而易見而感到驚訝。我想嘗試一下,並開始打包現有的C++庫。如何在Boost中包裝init/cleanup函數python
雖然包裹的基本庫API調用非常簡單(沒有什麼特別的,只是普通的函數調用和很常見的參數),我不知道如何正確地包裹初始化/清理功能:
因爲它的立場,我的C++庫需要調用者在程序啓動時首先調用mylib::initialize()
,並在調用結束之前調用mylib::cleanup()
(實際上還有一個初始化對象負責處理該對象,但它可能不相關)。
我應該如何使用boost python來包裝它?
強制Python用戶撥打電話mymodule.initialize()
和mymodule.cleanup()
似乎不是很方便pythonic。有沒有辦法以自動的方式呢?理想情況下,initialize()
的調用將在導入模塊時透明地完成,並且在Python腳本結束時也調用cleanup()
。
有沒有辦法做到這一點?如果不是,那麼最優雅的解決方案是什麼?
謝謝。
我認爲這是做這件事的最好方法。通常情況下,如果你需要專門的功能,你可以像上面所做的那樣創建一個簡單的結構體。 – 2011-03-23 14:42:57
謝謝你的回答。我會試一試,並讓你發佈:) – ereOn 2011-03-23 15:38:22
我必須用'class_'替換'class__'才能編譯。並且必須切換()最後2行,以便python不會抱怨。非常感謝你。你介意我是否編輯你的答案以反映這些變化? – ereOn 2011-03-23 16:35:23