我看到没有人指出我最喜欢的包装C++代码的解决方案之一,SIP(我相信它也适用于包装C,如SWIG和Boost不同,但我从未使用过这种方式).这是Riverbank软件开发的工具PyQt,它是美妙的Qt C++跨平台框架的Python接口 - 所以如果您的C++代码使用任何Qt功能,它就是一个自然的选择,就像Boost Python是C++代码的自然选择一样使用Boost.
SWIG是我们在工作中使用的(10年前制定的合理决策;-)并且具有理论上的优势,它还可以包装C或C++代码以供Java,Perl,Tcl等使用 - 但是如果你只关心Python,很难看到任何让它脱颖而出的东西.
如果你只是包装一个现有的DLL /,除了Cython,其他答案已经指出了(我赞同,但是 - 它现在变化非常快,所以如果你需要更稳定的东西,请注意),考虑标准函数模块ctypes - 我不会将它用于非常广泛的工作(C或C++编译器指出的"oops"错误会导致运行时崩溃与ctypes),但是对于小型工作来说它很棒(并且非常方便,因为它带有标准的Python发行版! - ).
好的旧C API还没有死 - 今天刚刚遇到了Case,这位伟大的家伙最近为我的老式开源项目gmpy做了大部分的操作,我们一起决定坚持使用C API至少gmpy的下一个版本 - 我们会考虑在稳定时切换到Cython,但我们同意现在的转换仍然有点为时过早.(我们甚至没有想到任何其他选择,因为gmpy的主要观点是尽可能快地制造它! - ).