如何为 Python 制作 C++ 库

Posted

技术标签:

【中文标题】如何为 Python 制作 C++ 库【英文标题】:How to make a C++ library for Python 【发布时间】:2014-07-16 10:39:03 【问题描述】:

我是面向对象编程的新手,我正在努力寻找一个关于如何用 C++ 创建一个可以导入 Python 的库的好教程。

目前我只是想做一个简单的例子,将两个数字相加。我对这个过程感到困惑。本质上我希望能够在 Python 中做这样的事情:

import MyCPPcode

MyCPPcode.Add(5,3) #function prints 5+3=8

我不要求提供完整的代码示例,只是我需要采取的步骤。 我需要制作 .dll 还是静态库?我正在使用 MS Visual Studio 2013。

此外,该过程是否以任何方式为 Python 定制 C++ 库代码,或者该库是否也可用于其他语言?

【问题讨论】:

Boost Python 库怎么样?稍微搜索一下就不会难找到自己。 @JoachimPileborg 从我已经研究/尝试使用 Boost 的一个简单示例来看,这样的简单示例比我仅使用 ctypes 更复杂。 你检查过tutorial中的例子吗?比这更简单的东西很难被击败。 ***.com/questions/5081875/ctypes-beginner 太简单了。 可能你不会坚持写这么琐碎的代码。 Boost 当然有更大的开销,但是如果你的 c++ 库获取类和更多功能,使用 ctypes 会变得很困难...... 【参考方案1】:

虽然我无法指导您完成整个过程,因为我对python不太了解,以下是我所知道的:

绝对有可能。虽然不适合刚接触面向对象编程的人,但它被称为 python-C/C++ API。如果你在 python 文档中搜索它,有几个章节是关于它的。

虽然您展示的示例函数可能看起来像来自 python 的函数,但该过程在 c++ 中更加冗余(在幕后)。有一些工具可以解决这个问题,例如 Cython,但如果你想学习,我建议使用纯 Python API。

至于其他语言的可用性...嗯,内部函数(即添加两个数字)当然是通用 c++,因此您可以在其他项目中重用它们,但是是的,创建的库将可以使用python,而不是别的东西。

【讨论】:

以上是关于如何为 Python 制作 C++ 库的主要内容,如果未能解决你的问题,请参考以下文章

如何为 C 扩展链接 python 的静态库?

如何为以下python代码制作单独的kivy文件

如何为标签列表制作“滚动条”? python tkinter [复制]

Python - Qt。如何为 Telnet 或 ssh 服务器交互制作终端窗口

如何为另一个版本的 python 制作 pip install 东西

如何为 Python Swigged C++ 对象创建和分配回调函数