问题标签 [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.
c++ - 暴露 std::vector使用 boost.python
我编写了一些生成 std::vector 的 C++ 代码。
我还有一个 python 脚本,它可以操作一些数据,现在,我像这样声明(如下)。
我可以很好地运行脚本。从我的 C++ 代码:
我不知道如何将我的 C++ 数据传输到 python。我有很多,但似乎没有什么确定的。
我的 C++ 中有
这似乎可行,但据我了解,它只为我的 python 脚本提供了一个类“PyVec”,而不是我需要的数据。我错了吗?
我还看到其他一些人在 python 邮件列表中使用 boost::shared_ptr。
我也找到了这个例子,但发现它令人困惑。
我能想到几种方法
- 传递一些东西给
boost::python::exec_file
方法 - 使用
boost_indexing_suite_ext
- 英格
boost::shared_ptr
哪种方法最容易上手?对我来说,没有一种方法很清楚。
以下是我查看的更多链接: 来自python 网站的 boost网站 另一个邮件列表线程
更新:
这适用于将一个传递int
给我的python代码,如下所示
但是我想传递一个向量,当我尝试以与上述类似的方式执行此操作时,我收到此错误
TypeError: No to_python (by-value) converter found for C++ type: std::vector >
所以,显然我需要告诉 python 如何处理 std::vector。我认为这段代码可以帮助解决这个问题。
但是由于 std::vector 很常见,所以必须有一个明确的方法来做到这一点……对吧?
python - CPython、IronPython、Jython 脚本是否相互兼容?
我很确定 python 脚本可以在所有三个中工作,但我想确定一下。我在这里和那里阅读过关于可以编写 CPython、Jython、IronPython 的编辑器的信息,我希望我能深入了解其中的区别。
我的情况是我要测试 3 个不同的 api。每个 api 在代码方面执行相同的功能,但它们在实现上是不同的。我正在围绕每种语言的 api 编写包装器。每个包装器都应该使用 Boost::python、Jython 和 IronPython 向 python 公开完全相同的功能和实现。
我的问题是,使用这些公开的方法(每种语言都通用)编写的 Python 脚本是否适用于 Python 的所有三种“风格”?
就像我说的那样,我很确定答案是“当然”,但在我花太多时间做这件事之前,我需要确定一下。
c++ - 如何使用常规 makefile 构建依赖于 boost 的项目?
我正在开发一个 c++ 项目,我们最近需要在其中包含一小部分 boost。boost 部分真的很小(Boost::Python),因此,使用 bjam 构建一切看起来有点过头了(此外,从事该项目的每个人都对 make 感到满意,并且没有 jam 知识)。
我已经做了很多测试,但是我找不到一种方法来在我的 makefile 中包含前面提到的库并使构建成功。
非常感谢您的所有帮助。:)
c++ - 使用 Visual Studio 2008 构建 boost python 示例
我正在使用 Boost Python 库为我的 C++ 代码创建 python 扩展。我希望能够从 python 调用下面显示的 C++ 代码中的 'greet' 函数:
和python代码:
我已经设法使用 bjam 做到了这一点(生成了 hello_ext.pyd 并且效果很好),但现在我想使用 Visual Studio 2008 构建它。构建了一个 hello.dll (但既没有 hello_ext.dll 也没有任何.pyd)。调用我的 python 代码后,我得到一个错误:
ImportError:没有名为 hello_ext 的模块。
将 hello.dll 重命名为 hello.pyd 或 hello_ext.pyd 后,我得到另一个 ImportError: Dll load failed
如何使用 VS 2008 构建正确的 .pyd 文件?
boost-python - Boost.python 因 libboost_python.so.1.41.0 失败:无法打开共享对象文件
我已经安装了 Boost.Python。安装过程中没有错误,但我有一个问题。当我尝试构建我的项目时,一切正常,但是当我运行包装的项目时出现错误:
我试图将项目复制到 libboost_python.so.1.41.0 也将 lib 复制到项目等。但每次我都有 sme 错误。
c++ - 如何在函数和成员函数上编写一个包装器,在包装函数之前和之后执行一些代码?
我正在尝试编写一些包装类或函数,允许我在包装函数之前和之后执行一些代码。
理想情况下,包装器应该是通用的,适用于具有任何签名的函数和成员函数。
更多信息:
我正在寻找一种简单的方法来释放/重新获取围绕我昂贵的 C++ 调用的 GIL,而不必像这样手动编写瘦包装器:
这种包装器将针对各种功能重复多次,我想找到一个解决方案,让我避免对所有功能进行编码。
我尝试了一些方法,但我能想到的最好方法是要求用户明确说明返回值和参数的类型,例如:
但在我看来,应该可以将指针传递给函数(&foo_wrapper)并让编译器找出类型。
有谁知道我可以使用或指出正确方向的技术?
干杯!
c++ - 提升功能的Python方法
我有一个使用 boost python 将 boost::function 作为参数导出到 Python 的方法。
从我读过的内容来看, boost::python 应该支持 boost::function 而不会大惊小怪,但是当我尝试使用 python 方法调用该函数时,它给了我这个错误
我用这段代码从python调用它
在 C++ 中它被定义为
这里的目标是一个计时器类,我可以在其中做类似的事情
创建一个执行 funcWithArgs 的计时器。多亏了 boost bind,这几乎可以与任何函数或方法一起使用。
那么我需要使用什么语法来让 boost::python 接受我的 python 函数作为 boost::function?
linux - Boost::Python:在构建 python-extension 时将自定义参数传递给 gcc
我需要传递-Wl,-rpath,\$$ORIGIN/lib/
给 g++ 的链接器(原因)。有没有办法在 Jamroot 文件中传递这个参数?
c++ - How to use C++ operators within python using boost::python (pyopencv)
I'm using the pyopencv bindings. This python lib uses boost::python to connect to OopenCV. Now I'm trying to use the SURF class but don't know how to handle the class operator in my python code.
The C++ class is defined as:
How can I pass my arguments to that class?
Update: Thanks to interjay I can call the method but now I getting type errors. What would be the python boost::python::tuple ?
Gives me that:
c++ - boost::python 导出自定义异常
我目前正在使用 Boost.Python 为 Python 编写 C++ 扩展。此扩展中的函数可能会生成包含有关错误信息的异常(不仅仅是描述所发生情况的人类可读字符串)。我希望我可以将这个异常导出到 Python,这样我就可以捕获它并使用额外的信息做一些事情。
例如:
不幸的是,Boost.Python 似乎将所有 C++ 异常(即 的子类std::exception
)转换为RuntimeError
. 我意识到 Boost.Python 允许实现自定义异常转换,但是,需要使用PyErr_SetObject
一个PyObject*
(用于异常的类型)和一个PyObject*
(用于异常的值)——我都不知道如何从我的 Boost 中获取。 Python 类。也许有一种我还没有找到的方法(这会很棒)。否则有谁知道如何导出自定义 C++ 异常以便我可以在 Python 中捕获它?