【问题标题】:how to compile a C/C++ function for python如何为python编译一个C/C++函数
【发布时间】:2012-02-18 17:16:23
【问题描述】:

我有一个用 cpp 编写的源代码,我想在 Python 中编译和读取它。 Python 必须提供 2 个文件名作为输入,并检索一个矩阵和一个向量作为输出。 如果我必须在 C/C++ 中执行此操作,我会使用 2 个字符和 2 个指针,但我不知道如何在 Python 语言中看到已编译的 C/C++ 程序。

我希望有人可以帮助我。 非常感谢。

【问题讨论】:

  • 您可以使用 ctypes 或 Python 扩展来实现。前者在发展方面可能会更快。您将 C++ 代码构建到 DLL 中并导出单个函数。阅读 ctypes 文档以了解如何从 Python 中获取它。
  • this stackoverflow question 的答案可能有用。
  • 非常感谢您提供的链接,但我在编译为共享库时遇到了一些问题。在 Mac OS 上如何操作?

标签: c++ python c compilation


【解决方案1】:

尝试使用Swig 生成从 Python 调用 C/C++ 代码所需的胶水代码。比自己写代码更容易。

【讨论】:

  • 感谢您的提示。我已经在 linux 上安装了 swig,它运行良好,但是在 mac os 上我使用命令 ld -shared 时遇到了一些问题,它说它无法识别 -shared。我该如何解决?
  • @Nicholas 为什么要手动运行ld?您应该使用gccg++ 进行链接。
  • 因为我在某些网站上发现了它,但它在 mac 上不起作用。你知道如何使用gccg++ 我不知道所有可能的选项。我是新手
  • @Nicholas 一般过程是这样的:运行g++ -c -fPIC mylib_wrap.cxx -o mylib_wrap.os编译代码(注意-c),然后g++ -shared -o libmylib.so mylib_wrap.os链接。但是我真的不能在这里给你一个完整的指南;互联网上有很多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 2017-09-27
  • 2010-10-08
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多