2011-01-29 73 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