C++ 在c+;中追加整数时出错+;boostpython列表
我编写了这段代码,但它不起作用C++ 在c+;中追加整数时出错+;boostpython列表,c++,python-2.7,boost-python,C++,Python 2.7,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); re
#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 0;}
#包括
名称空间bp=boost::python;
int main(int argc,字符**argv){
列表点;
int-one=1;
int 2=2;
int三=3;
点数。附加(一);#crach!!
附加(两个);
附加(三);
返回0;}
这就是为什么“append”不接受整数的原因,哪种方法是正确的
已编辑
解决办法是:
#include <boost/python.hpp>
namespace bp = boost::python;
int main(int argc, char **argv) {
Py_Initialize(); //this part
bp::list points;
int one = 1;
int two = 2;
int three = 3;
points.append(one); #crach!!
points.append(two);
points.append(three);
Py_Finalize(); //this part
return 0;}
#包括
名称空间bp=boost::python;
int main(int argc,字符**argv){
Py_Initialize();//此部件
列表点;
int-one=1;
int 2=2;
int三=3;
点数。附加(一);#crach!!
附加(两个);
附加(三);
Py_Finalize();//此零件
返回0;}
从文档中,它看起来像一个模板方法。所以,你可以试试
points.append<int>(one);
points.append(一个);
<代码> > p>我认为你应该使用导出代码中的“代码>升迁::Python::列表< /C>”,而不是直接从C++程序中。原因很简单:boost::python::list
是一个围绕python list对象的包装器,要使用它,您需要一个python解释器,当您尝试从main
方法对列表进行操作时,该解释器不可用
下面是一个工作示例:
#include <boost/python.hpp>
namespace bp = boost::python;
bp::list getlist() {
bp::list points;
int one = 1;
int two = 2;
int three = 3;
points.append(one);
points.append(two);
points.append(three);
return points;
}
BOOST_PYTHON_MODULE(listtest) {
using namespace boost::python;
def("getlist", getlist);
}
非常感谢,但这并不能解决问题。。。文档在哪里?这没有意义,因为模板参数无论如何都会被推导出来,即使你不在callsite中提及。你会得到什么错误?这是真的,但我制作了一个主程序来调试这些函数。我认为你有两个选择:要么通过调用Python进行调试,要么嵌入Python解释器。
>>> import listtest
>>> print listtest.getlist()
[1, 2, 3]