2010-11-12 82 views
2

我最近用SWIG寫了一個C庫的綁定。雖然這很簡單,只使用了基本的SWIG功能,但是當我需要支持一個將C回調作爲參數的函數時,我遇到了麻煩,SWIG不支持這個函數。我通過編寫特定於Python的代碼來解決此問題,以提供一種自定義回調,其中我稱Python爲「eval」函數以評估提供的Callable。處理C風格回調的綁定生成器(如SWIG)?

儘管這很好用,但對我來說卻很不幸..我一直希望能夠使用SWIG來利用其對數十種語言的支持,但是現在我被卡在每一種語言中希望支持。這使得我的綁定工作量變得不那麼有用,因爲我現在必須手動解決相同的問題多次 - 與使用SWIG相反。

是否有像SWIG這樣的工具處理C回調?

回答

0

這是有點rounadabout,但如果你用C++重新編譯C項目或創建一個C++擴展,那麼你可以利用虛函數重載。

大多數SWIG語言模塊都支持directors,它們允許目標語言中的類從C++庫中的類派生。這樣任何重寫的虛函數都可以作爲回調函數。