首页 > TAG信息列表 > boost-python

c-保存复杂的脚本对象的状态

在C语言中,我有以下两个类(使用Boost)公开给Python: struct Foo { // Empty }; struct FooContainer { // I use boost::shared_ptr for compatibility with Boost.Python vector<boost::shared_ptr<Foo>> foos_; }; 在Python方面,我可能会创建一种特殊的Foo类型,它

python函数作为参数使用:: boost :: python来公开类

我已经与Python和C一起工作了一段时间,但从未尝试实现以下内容: 希望python用户能够编写如下内容: def foo(a,b): return a+b myclass.myfunc(foo) 其中myclass是通过Boost.Python暴露给python的c类,其方法之一(myfunc)具有以下功能: int func(int,int) 签名,仅此而已. 这可

c-嵌入python并运行多次

我正在使用boost :: python嵌入python,这是我的方法: void runCode(){ Py_Initialize(); //boost::python code goes here and embedded python code runs Py_Finalize(); } 第一次运行良好,但是再次运行时,出现此错误: LookupError: unknown encoding: utf8 并且代

boost :: python:使用回调

我有这样的头文件(fingisdk.h): #ifndef FINGISDK_H_ #define FINGISDK_H_ #include "fingienum.h" #ifdef __cplusplus extern "C" { #endif typedef void (*fingi_event)(FINGI_EVENT_ID eventId, char* msg); FINGI_EVENT_ID start_fingi_sdk(char* ini_f

Boost.python自动转换参数

我正在使用boost.python来包装一个将字符串作为构造函数的C类’A’.然后,我有一个函数“ fun(A& arg)”,该函数将对“ A”的引用作为参数.我想为“ fun”使用一个python包装器,这样,如果我传递一个对python字符串的引用的变量,则该引用首先会自动转换为对“ A”的引用. 一个例子可

Python C API-如何从PyObject构造对象

我正在寻找一种已知的PyObject *是否存在一种很好的“本机”方式来构建对象. 这是我目前的代码: C void add_component(boost::python::object& type) { auto constructed_type = type(); // doesn't construct anything! } Python o = GameObject() o.add_component(CameraC

boost.python c多线程

我正在编写一个包含c模块的python程序(.so,使用boost.python). 我正在启动几个运行c函数的python线程. 这是C代码的样子: #include <boost/python.hpp> using namespace boost; void f(){ // long calculation // call python function // long calculation } BOOST

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

我将使用Boost.Python的C树类公开给python.节点类包含子节点列表并提供一种方法 void add_child(Node *node) Node类获得所提供的Node指针的所有权,并在调用销毁器时删除其子节点. 我将add_child方法公开为: .def("addChild", &Node::add_child) 我的实际问题是:如何告诉Boost.Py

c-确定PyObject *是否为PyLongDoubleScalarObject(numpy)

给定C中的PyObject *,如何确定它是否是PyLongDoubleScalarObject的实例? PyLongDoubleScalarObject是用于存储128位浮点数(长双精度)的相应numpy类,该类在numpy / arrayscalars.h中定义. 使用dynamic_cast不能作为PyObject *非多态的.当我寻找如何为PyObject做与dynamic_cast相对应

无法通过无限循环的boost.python模块中的Ctrl-c终止进程

我制作了一个带有无限循环的boost.python模块,但是我无法通过ctrl-c终止该进程.以下是一个示例. C #include <boost/python.hpp> #include <boost/python.module.hpp> #include <boost/python.def.hpp> #include <iostream> usring namespace boost::python; void foo() { int

c-解释Python扩展多线程

Python解释器具有全局解释器锁,据我了解,扩展必须在多线程环境中获取它.但是Boost.Python HOWTO page表示扩展功能必须释放GIL并在退出时重新获取它. 我想抵制在这里进行猜测的诱惑,所以我想知道在以下情况下应该是什么GIL锁定模式: > Extension是从python调用的(大概在python线程中

在c boost python列表中追加整数的错误

我做了这个代码,它不起作用 #include <boost/python.hpp> namespace bp = boost::python; int main(int argc, char **argv) { bp::list points; int one = 1; int two = 2; int three = 3; points.append(one); #crach!! points.append(two); points.append(three); return

c – Boost包装虚拟方法的python

我正在使用boost python来创建与c库的绑定.该库中的许多类都有虚方法,它们接受iterator / const_iterator类型作为参数.我并不特别希望公开这些类型,但更愿意围绕这些接受适当容器的虚拟方法创建一些包装器.我的问题是,在“默认实现”功能中进行此包装是否安全? 例如 class Test {

在C中嵌入Python并从C代码调用方法

我尝试将Python脚本嵌入到我的C程序中.在阅读了有关嵌入和扩展的一些内容之后,我了解了如何打开自己的python脚本以及如何将一些整数传递给它.但现在我有点不明白如何解决我的问题.我必须做两件事,从C调用Python函数并从我的嵌入式Python脚本调用C函数.但我不知道从哪里开始.我知道

python – 使用现有C对象初始化Cython对象

C模型 假设我有以下C数据结构,我希望向Python公开. #include <memory> #include <vector> struct mystruct { int a, b, c, d, e, f, g, h, i, j, k, l, m; }; typedef std::vector<std::shared_ptr<mystruct>> mystruct_list; 提升Python 我可以使用boost :: python使用

python – 从NumPy数组到Mat(OpenCV)的C转换

我正在围绕ArUco增强现实库(基于OpenCV)编写一个薄的包装器.我想要构建的接口非常简单: > Python将图像传递给C代码; > C代码检测标记并将其位置和其他信息作为dicts元组返回给Python. 但是,我无法弄清楚如何在Python中表示图像以将其传递给C.对于GUI和相机管理,我将使用PyQt,所以最

c – boost.python不支持并行性?

我试图使用boost.python将一段C代码包装到python lib中,但是,我发现多个实例不能同时运行: 代码(C): class Foo{ public: Foo(){} void run(){ int seconds = 2; clock_t endwait; endwait = clock () + seconds * CLOCKS_PER_SEC ; while

Boost.python重载了numpy数组和python列表的构造函数

给定使用Boost.Python公开的C类,如何公开两个构造函数: >一个采用numpy数组,和 >另一个需要python列表?解决方法:我不是100%的意思,但我假设你想让一个构造函数采用Python列表而另一个采用numpy数组.有几种方法可以解决这个问题.最简单的方法是使用make_constructor函数并重载它: usin

c – 返回对自定义对象的引用时Boost.Python出错

编辑:我注意到我的问题不够明确;我没有指定n0是Edge的属性. 我有两个类Nodes和Edges. Edge是定义的(我省略了许多不感兴趣的方法和属性): class Edge() { Node& n0; public: const Node& N0() const; }; 访问器编码如下: Node const& Edge::N0() const { return n0; }; 其中

boost python wrap c类私有成员

我们可以用boost python包装c私有构造函数吗? 我有一个单例c类,并希望将其包装到python. 我们可以用boost python包装c私有成员函数吗? 非常感谢解决方法:使用这样的东西: #include <boost/python.hpp> #include <iostream> using namespace boost::python; using std::cout; class

使用boost :: python时,将python.io对象转换为std :: istream

在编写我的第一个django应用程序时,我遇到了boost :: python的以下问题.从python代码,我需要将io.BytesIO传递给采用std :: istream的C类. 我有一个遗留的C库,用于读取某种格式的文件.我们打电话是somelib.该库的接口使用std :: istream作为输入.像这样的东西: class SomeReader {

c – 如何返回包含PyObject *的boost :: python :: tuple?

我目前有一个boost.python类,用于从basler相机获取图像,将它们转换为opencv图像,并将它们作为python脚本的numpy数组返回. 我原来有以下代码工作: PyObject *capture() { PyObject * ret; CGrabResultPtr ptrGrabResult; CPylonImage pylonImage;

复制boost.python对象

我有一些boost python类,我在python中实例化.我想复制它们.所以,如果我有 p = Bernoulli(0.5) 我想要做 q = Bernoulli(p) 但是,如果我不知道p的类型怎么办?我试着这样做: q = copy.deepcopy(p) 但是python说它无法腌制p. 我唯一的解决方案是将一个clone()函数添加到Bernoulli

c – Windows / MSVC10下的Boost.Python链接错误

我使用正确的Python配置使用b2编译了boost 1.50.0库.这是命令b2 –debug-configuration的相关输出: notice: [python-cfg] Configuring python... notice: [python-cfg] user-specified cmd-or-prefix: "C:\Python33z\python" notice: [python-cfg] Checking interpreter command

将python脚本添加到c项目

我如何将用python编写的脚本添加到c项目中?谢谢 编辑:基本上所有脚本都会通过电子邮件发送一些数据.我想将数据和电子邮件地址传递给用python编写的函数.希望这能说明问题..解决方法:您可以查看Boost.Python这是一个“C库,它实现了C和Python编程语言之间的无缝互操作性.” 不过,你必