2013-02-15 61 views
0

我想找到一種方法來測試我的C代碼使用Python腳本。到目前爲止,我的發現是Python&C:可以將Ctypes和Swig混合在一起嗎?

1)與Ctypes,我可以很容易地加載所以直接從python調用函數。另外,一切都在運行時發生,所以沒有額外的編譯/包裝的東西。

2)但是,重新編寫python中的每一種類型都很乏味且容易出錯,特別是對於複雜的數據類型。每當定義發生變化時,我將不得不更新python腳本中的定義。

我在想,因爲Swig可以自動導出數據類型,可以將Swig和Ctypes混合在一起嗎?即使用Swig導出數據類型,可以通過Ctypes調用函數。

p.s我不確定Cython是否適合,但我們在環境中沒有Cython。

+0

那麼,你將不得不安裝Cython。但是,如果你正在與Swig打交道,那麼你肯定已經擁有了Cython的所有要求? – Arafangion 2013-02-15 04:32:03

+0

@Arafangion,困惑,Swig取決於Cython?另一件事是我們的建築環境不同於測試環境,在測試環境我們沒有swig也沒有cython。 – wei 2013-02-15 20:47:25

回答

0

我最終使用Swig動態鏈接到由C代碼生成的庫。通過這種方式,我只需將頭文件包含在swig接口文件中來告訴swig要公開哪些函數/數據類型。這種方法的另一個優點是我可以在C中編寫測試幫助函數,並且很容易公開這些函數。

相關問題