+ -
当前位置:首页 → 问答吧 → 怎样利用boost.python在C++中直接使用Python类对象

怎样利用boost.python在C++中直接使用Python类对象

时间:2011-09-06

来源:互联网

例如有个Python脚本 Download.py,内容如下:
Python code

class Download():
   def Begin():
       print('Download')

def StartDownload():
   down = Download()
   down.Begin()


现在我想利用boost.python在C++程序中嵌入这个脚本,并且使用Download类对象,现在的代码如下:

C/C++ code

   Py_Initialize();
   boost::python::object downloadModule =boost::python::import("Download");
   boost::python::object downloadNamespace =downloadModule.attr("__dict__");

   //方法一,通过StartDownload()方法间接使用
   boost::python::object funcStartDownload =downloadNamespace["StartDownload"];
   funcStartDownload();

   //方法二,直接使用
   boost::python::object downloadClass =downloadNamespace["Download"];
   boost::python::handle<> downloadHandle= extract<boost::python::handle<> >(downloadClass());
   call_method<void>(downloadHandle.get(), "Begin");

   Py_Finalize();



不知道还有其他什么方法可以直接在C++中使用Python类对象?

作者: wangjiepro   发布时间: 2011-09-06

可以直接使用exec。

作者: iambic   发布时间: 2011-09-06

引用 1 楼 iambic 的回复:

可以直接使用exec。


有代码瞅瞅吗?

作者: wangjiepro   发布时间: 2011-09-06

http://www.boost.org/doc/libs/1_38_0/libs/python/doc/tutorial/doc/html/python/embedding.html

作者: iambic   发布时间: 2011-09-06