如何为 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++ 库的主要内容,如果未能解决你的问题,请参考以下文章
如何为标签列表制作“滚动条”? python tkinter [复制]
Python - Qt。如何为 Telnet 或 ssh 服务器交互制作终端窗口