gpt4 book ai didi

c++ - 如何将 C++ 库作为共享对象文件 (.so) 加载到 Python 中?

转载 作者:行者123 更新时间:2023-11-28 03:25:11 24 4
gpt4 key购买 nike

我是一名 Python 人员,正在为一位客户构建基于 Linux 的 Web 服务,该客户希望我与一个小型 C++ 库进行交互,而该库目前正在与一堆基于 Windows 的 VB 应用程序一起使用。

他们向我保证,该库相当简单(我猜就目前而言),他们只需要知道如何最好地编译并将其交付给我,以便我可以在 Linux 下的 Python 中使用它。

我已经阅读了一些关于 ctypes 库和其他选项(SWIG 等)的内容,但出于某种原因,我还没有真正理解这个概念,但仍然不了解不知道如何告诉他们我需要什么。

我很确定让他们用 Python.h 等重写它已经过时了,所以我希望有一种方法可以让他们在 Linux 上将它简单地编译为 .所以只需将其导入 Python。这样的事情可能吗?如何做到这一点?

最佳答案

不,这样的事情是不可能的。

要么他们必须提供 Python 绑定(bind),要么您必须提供。你们中的任何一个都可以通过以下任何一种方式执行此操作:

  • 使用 <Python.h>直接编写 C 扩展模块。
  • 使用 boost::python使编写扩展模块更容易(尤其是当他们使用 C++ 而不是 C 时)。
  • 使用 SWIG、SIP 或类似工具部分自动化编写扩展模块。
  • 使用 Cython 用类似 Python 的语言而不是 C 或 C++ 编写扩展模块。
  • 使用 ctypes来自 Python。

对于非常简单的情况(特别是如果他们实际上将 C 接口(interface)导出到他们的 C++ 代码),ctypes可能是最简单的解决方案。否则,我建议先看看 Cython。但无论如何,您将不得不考虑其中一种解决方案——或者说服他们改用它。

关于c++ - 如何将 C++ 库作为共享对象文件 (.so) 加载到 Python 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14289656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com