2011-01-29 81 views
2

所以基本上,我試圖用Python編寫我自己的GUI包裝器(使用GTK +,但我認爲這沒有關係),用C++編寫並編譯的API由用戶在Linux中[* nix?我不太確定它是如何在Mac上工作的])或dll(在Windows中),您應該可以參考自己使用API​​。經過一段時間的嘗試,我可以編寫自己的擴展,只要它是一個單獨的文件,但我在網上找不到關於使用多個文件的任何內容(因爲這顯然是,因爲任何真正的項目將會)編譯成一個可以導入到Python項目中的.so。我需要手動通過並使用Cython併爲每個.cpp文件創建.pyx文件(其中有很多),將它們編譯爲cpp文件,然後編輯,然後使用make文件將這些文件編譯到.so文件中,還是有更自動的方式? (ps我試着用Cython分別編譯每一個,但它似乎不喜歡「#include < path/file>」符號,所以不能編譯大部分文件)使用Cython擴展Python與C++共享對象庫

其他信息:已經能夠使用ctypes與圖書館進行交互,但是這感覺非常黑客和非pythonic,並且我想用Cython獲得更多的經驗,因爲它看起來可能是一個非常有用的資產。

回答

0

你可以做一個名爲「yourmodule.pyx」文件,重命名所有其他文件,PXI,並做到:

include "other1.pxi" 
include "other2.pxi" 

那麼你就必須只有一個文件到cythonize和編譯:yourmodule.pyx 。

+0

這是一個整潔的想法。然而,我最終做的是創建一個僅直接與.so文件交互的C++文件,然後將其包裝到它自己的單獨擴展中(一個擴展名,唯一目的是與另一個擴展名進行通信)。總的來說,這是非常成功的。不過謝謝。 – Josiah 2011-03-08 06:53:07