当前位置: 首页 > 面试题库 >

向Python公开C ++ API

鲁才艺
2023-03-14
问题内容

我目前正在研究一个项目,因为我必须用Python包装C ++类才能编写程序脚本。因此,我的具体经验还涉及将Python解释器嵌入到我们的程序中。

我尝试的替代方法是:

  • Boost.Python

我喜欢Boost.Python生成的更清洁的API,但事实是它需要用户安装其他依赖项,这一事实使我们切换到SWIG。

  • 斯威格

SWIG对我们而言的主要优势在于,它不需要最终用户安装它即可使用最终程序。

您曾经做什么过,您对此有何经验?


问题答案:

我都用过(对于同一项目):Boost更好地与STL集成在一起,尤其是C 异常。而且,它的内存管理机制(试图将C 内存管理和Python
GC结合起来)比SWIG灵活得多。但是,SWIG有 很多
更好的文档,没有外部的依赖关系,如果你包裹在SWIG为Python库你超过中途那里得到一个Java / Perl的/ Ruby的包装也是如此。

我认为没有一个明确的选择:对于较小的项目,我会再次使用Boost.Python,对于较大的长期项目,在SWIG上的额外投资是值得的。



 类似资料:
  • Firebase Web-App指南指出,我应该将给定的放在Html中初始化Firebase: 通过这样做,就会公开给每个访问者。那把钥匙的用途是什么,它真的是要公开的吗?

  • 问题内容: 我想知道是否有任何方法可以将C ++类公开给Python,但无需构建中间共享库。 这是我理想的情况。例如,我有以下C ++类: 我想以某种方式将此类(或其实例)转换为PyObject *,以便将其作为参数(参数)发送给例如PyObject_CallObject: 另一方面,在python端,我有一个wrapperFunction,它将我的C ++类(或其实例)上的指针作为参数,并调用其

  • 我正在aws中运行openshift 我有一个主节点和两个节点。如何向aws公共IP公开服务?我可以在内部访问服务: 我怎么把它暴露给公共IP呢?是否可以在openshfit web控制台中完成?我尝试使用https://docs.openshift.com/container-platform/3.4/dev_guide/expose_service/expose_internal_ip_ser

  • 问题内容: 在web应用指南规定我应该把给定的在我的HTML初始化火力地堡: 这样一来,每个访问者都可以接触到。该密钥的目的是什么,真的意味着要公开吗? 问题答案: 此配置代码段中的apiKey只能识别您在Google服务器上的Firebase项目。知道它不是安全风险。实际上,他们有必要知道它,以便他们与Firebase项目进行交互。使用Firebase作为其后端的每个iOS和Android应用程

  • 我正在开发一个用Python3编写的应用程序,它由一个Python库/包(包含核心功能)和一个Python应用程序组成,该应用程序将提供cli shell并处理用户命令。 此外,Python包中包含的功能必须暴露给用C#(使用Microsoft. Net框架)编写的现有gui应用程序。 我已经对如何做到这一点做了相当多的研究,并提出了一些潜在的解决方案。 使用 Python.Net 在 C# 应用

  • var jade = require('jade'); // Compile a function var fn = jade.compile('string of jade', options); fn(locals); 选项 self 使用self 命名空间来持有本地变量. 默认为false locals 本地变量对象 filename 异常发生时使用,include