草庐IT

boost-implicit-cast

全部标签

c++ - SWIG, boost 共享指针和继承

我在SWIG、共享指针和继承方面遇到了麻烦。我正在创建各种相互继承的C++类,使用boost共享指针来引用它们,然后包装这些共享使用SWIG的指针来创建python类。我的问题如下:B是A的子类sA是指向A的共享指针sB是指向B的共享指针f(sA)是一个需要指向A的共享指针的函数如果我将sB传递给f(),则会引发错误。此错误仅发生在python级别。在C++级别,我可以毫无问题地将sB传递给f()。我有boost1.40和swig1.3.40。以下是将重现问题的5个文件的内容与:pythonsetup.pybuild_ext--inplacepythontest.pyswig_shar

c++ - 使用 Boost-Python 计算 python 中定义的函数的导数

我想编写一个Boost-Python程序,从用户那里获取一个符号python函数,并在我的程序中评估它的导数。例如,用户提供了一个python文件(Function.py),它定义了一个函数,例如F=sin(x)*cos(x).然后我想使用Sympy的符号微分能力来访问F'(x)(F(x)的导数)。我不想使用数值微分。有没有一种方法可以使用Boost-Python在C++中访问这样的函数F'(x)。 最佳答案 这里有一些代码可以帮助您入门。主要.cpp:#include#includeusingnamespaceboost::pyt

python - 使用 Boost.python 将 Python 列表传递给 C++ 向量

如何传递对象类型的Python列表ClassName到接受vector的C++函数?我找到的最好的是这样的:example.不幸的是,代码崩溃了,我似乎无法弄清楚原因。这是我使用的:templatevoidpython_to_vector(boost::python::objecto,vector*v){try{objectiter_obj=object(handle(PyObject_GetIter(o.ptr())));return;for(;;){objectobj=extract(iter_obj.attr("next")());//Shouldlaunchanexceptio

MySQL中的cast()函数用法

CAST()函数,把一个字段转成另一个字段,主要转化的是字段的类型其语法为:cast(字段名as转换的类型)        转换的类型共有:CHAR      字符型                       DATE      日期型                       DATETIME  日期和时间型                                              DECIMAL   float型                       SIGNED    int型                       TIME       时间型比如在表ta

python - 导入如何从 python 文件中使用 Boost.Python

我正在使用Boost.Python在我的C++可执行文件中嵌入解释器并执行一些预先编写的脚本。我已经让它工作了,所以我可以调用python文件中的函数,但是我想使用的python代码导入外部文件并且这些导入失败,因为“没有名为的模块”。但是,如果我直接从python运行脚本,一切都会按预期进行。所以我的问题是在通过C++绑定(bind)运行的python脚本中导入模块的正确方法是什么?C++代码:#include"boost/python.hpp"intmain(intargc,char**argv){try{Py_Initialize();boost::python::objectt

c++ - 使用 boost python 和 python 3.2 的 Hello world

所以我尝试使用boostpython连接python3.2和c++,并且遇到了很多很多问题。我终于让它可以使用2.7库进行编译并且它可以工作,但我似乎无法让它与python3.2一起工作。这是c++代码#includeusingnamespacestd;voidsay_hello(constchar*name){cout#includeusingnamespaceboost::python;BOOST_PYTHON_MODULE(hello){def("say_hello",say_hello);}如果我使用2.7库编译它,它工作得很好,但是当我使用3.2库时,我从libboost_p

python - "Cast"到 Python 3.4 中的 int

我正在用Python3.4编写一些简单的游戏。我是Python的新手。代码如下:defshapeAt(self,x,y):returnself.board[(y*Board.BoardWidth)+x]抛出错误:TypeError:listindicesmustbeintegers,notfloat目前我发现当Python“认为”列表参数不是整数时可能会发生这种情况。您知道如何解决这个问题吗? 最佳答案 int((y*Board.BoardWidth)+x)使用int获取最接近零的整数。defshapeAt(self,x,y):re

c++ - 使用 Boost.Python 将 Python 转换为 C++ 函数

我有一堆用C++编写的类和API,并在Boost.Python的帮助下暴露给Python我目前正在研究创建以下架构的可能性。在python中:fromboostPythonModuleimport*AddFunction(boostPythonObject.Method1,args)AddFunction(boostPythonObject.Method2,args)AddFunction(boostPythonObject.Method2,args)RunAll()#runningisdonebyC++在C++中:voidAddFunction(boost::objectmethod

python - c++0x std::shared_ptr 与 boost::shared_ptr

我有一个大量使用shared_ptr和STL的C++代码。一个常见的标题说#includeusingboost::shared_ptr;//forshared_ptrusingnamespacestd;//forSTL我想现在切换到c++0x以利用语言功能,使用gcc4.6和-std=c++0x。但是现在也有std::shared_ptr,导致未指定的shared_ptr出现歧义(boost::shared_ptrvsstd::shared_ptr).当切换到std::shared_ptr时,像这样:#includeusingnamespacestd;//forSTL;alsoimpo

python - 使用 boost.python 实现真正的多线程

我正在尝试测试多线程C++DLL。这个DLL应该是线程安全的。我用boost.python包装它,我想创建多个python线程以通过boost.python包装器运行DLL。我实际上是在试图引起线程问题。我似乎找不到好的文档是关于python解释器是否支持它的两个线程(比如在不同的内核上)同时调用导入的模块,以及GIL是否需要照料,因为我不希望在DLL应提供的内容之上增加任何安全性。任何人都可以描述或推荐我从多线程调用DLL模块的python描述以及如何在这种情况下使用GIL吗? 最佳答案 如何在通过Boost.Python从Pyt