问题标签 [boost-python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
799 浏览

python - 如何使用 C++ 函数扩展嵌入式 python 解释器?

如何使用 C++ 代码扩展嵌入式解释器?我已经嵌入了解释器,我可以使用 boost.python 来制作一个可加载的模块(如在共享库中),但我不希望库四处飘荡,因为我想直接与我的 C++ 应用程序交互。对不起,如果我的写作有点不连贯。

0 投票
1 回答
794 浏览

c++ - 在 QtCreator 中调试使用 Boost.Python 构建的模块

我有一个用 Boost.Python 构建的模块,我想在 QtCreator(或者可能是 gdb)中调试它。如果可能的话,我更喜欢视觉环境。

0 投票
1 回答
813 浏览

c++ - 如何在 C++ 中传递/捕获/响应 Python 的 KeyboardInterrupt?

我有一个用 C++ 编写的简单库,我正在为使用 boost.python 创建一个 Python 包装器。有些函数需要很长时间才能执行(超过 30 秒),我想让它可中断,这样当我在 python 解释器中按 ctrl-d 触发 KeyboardInterrupt 时,我能够以某种方式在 C++ 中响应它。

有没有办法做到这一点?我在 boost.org 或 python.org 上找不到任何有关中断和 boost.python 的信息。

0 投票
2 回答
895 浏览

python - 在 Mac 上构建 Boost 和 Exempi

为了安装Python XMP Toolkit,我需要在我的 Mac 上安装 Exempi,但这样做会成为一场真正的噩梦......


经过很多麻烦,我终于用boost成功了,而且很棒


现在我正在尝试使用命令配置 Exempi

但它总是卡在这个:


我已经用谷歌搜索了几天,但我找不到任何有用的东西......以前有人遇到过同样的问题吗?我会为伸出援助之手而死...欢迎每一个提示!



编辑:
我已经做到了port,现在终于说exempi @2.1.1_0 (active).
问题是当我尝试加载 XMP 工具包时,它找不到 exempi,并引发错误,如安装指南中所述:

如果您尚未安装 Exempi,则在ExempiLoadError尝试加载 libxmp 时会出现异常。

我能做些什么?

0 投票
1 回答
1510 浏览

c++ - “卸载”一个 Python 模块和“解除绑定”相关的 API

我有一个嵌入 Python 的程序(通过 Boost.Python),并提供了一个“扩展”框架。我希望通过允许扩展为其 API 加载一组 Python 绑定来统一这两个部分,但是我对如何在卸载插件时“取消注册”这些 API 感到困惑。

这甚至可以用 Python 和 Boost.Python 实现吗?我知道 Lua 和 LuaBind 不可能,因为文档表明不可能“取消绑定”API。

很抱歉这个问题写得这么糟糕,现在是凌晨 2:30,我已经做了一段时间了。;)

0 投票
1 回答
1406 浏览

c++ - Boost::Python raw_function 返回 void

使用 Boost::Python,包装函数的正常机制与 C++ 函数返回void. 不幸的是,正常机制也有局限性,特别是在它支持的功能方面。所以我需要使用 boost::python::raw_function 来包装我的函数,但是当我的函数返回时它不会编译void。这是一个简单的测试用例:

这给出了错误:

/usr/local/include/boost/python/raw_function.hpp: 在成员函数 'PyObject* boost::python::detail::raw_dispatcher::operator()(PyObject*, PyObject*) [with F = void (* )(boost::python::tuple, boost::python::dict)]':

/usr/local/include/boost/python/object/py_function.hpp:94: 从 'PyObject* boost::python::objects::full_py_function_impl::operator()(PyObject*, PyObject*) 实例化 [with Caller = boost::python::detail::raw_dispatcher, Sig = boost::mpl::vector1]'</p>

void.cpp:8:从这里实例化

/usr/local/include/boost/python/raw_function.hpp:36:错误:无效使用无效表达式

目前,我可以通过让我的函数返回一个虚拟值来解决这个问题,但这有点不令人满意。其他人遇到过这个问题吗?

0 投票
1 回答
1122 浏览

c++ - Boost.Python:指针变量的所有权

我正在使用 Boost.Python 向 python 公开一个 C++ 树类。节点类保存子节点列表并提供方法

Node 类拥有提供的 Node 指针的所有权,并在调用析构函数时删除它的子节点。

我将 add_child 方法公开为:

我的实际问题是:我如何告诉 Boost.Python Node 类拥有子节点的所有权?

因为如果我在 python 中执行以下代码:

节点变量引用的对象在脚本结束时被删除两次。一次是在节点变量被删除时,第二次是在父节点被删除时。

0 投票
2 回答
4278 浏览

c++ - MSVC - boost::python 静态链接到 .dll (.pyd)

我有一个 VS10 项目。我想构建一些 C++ 代码,以便可以在 python 中使用它。我遵循了boost教程并让它工作了。然而 VS 一直链接 boost-python-vc100-mt-gd-1_44.lib 但它只是一个调用 boost-python-vc100-mt-gd-1_44.dll 的包装器。这就是为什么我需要用我的 .dll(.pyd) 文件复制 .dll。所以我想将 boost:python 静态链接到那个 .dll(.pyd) 文件。但我只是在 VS 或编译器和链接器手册中找不到任何配置选项。最奇怪的是,我有一个使用 boost::filesystem 且配置相同的旧项目,但该项目链接到 libboost-filesystem-*.lib 这是静态库,所以没关系。我已经在谷歌上搜索了几个小时而没有任何成功,这让我发疯了。

感谢您的任何帮助或建议。

0 投票
3 回答
244 浏览

java - 用于编写与 Python 交互的非常快速的抽象的语言选择?

我目前有一个用 Python 编写的系统,可以分为后端和前端层。Python 太慢了,所以我想用一种快速编译的语言重写后端,同时将前端保留在 Python 中,以一种允许从 Python 调用后端功能的方式。这样做的最佳选择是什么?

我考虑过 cython,但它非常有限且编写起来很麻烦,而且速度也没有那么快。根据我对 Boost Python for C++ 的记忆,维护语言之间的桥梁非常烦人。有更好的选择吗?

我的主要因素是:

  • 执行速度
  • 编译速度
  • 语言是陈述性的
0 投票
1 回答
4183 浏览

c++ - CMake:使用静态库的共享库

我正在尝试创建一个链接到静态库的共享库(实际上是一个 Python 模块)。这两个库都是同一个项目的一部分,并使用 cmake 构建。

现在,共享库是这样构建的:

这构建没有错误,但是当我尝试导入 Python 模块时,我得到:

我还有许多以类似方式构建的可执行文件(单元测​​试),它们运行良好。

我应该补充一点,这是在 Linux 上使用 gcc。