随笔-59  评论-36  文章-0  trackbacks-0

以下是通过boost::python实现的,python版本2.7
int main()
{
    Py_Initialize();

    PyObject 
* pModule = NULL;//声明变量
    PyObject * pFunc = NULL;// 声明变量
    pModule =PyImport_ImportModule("helloworld");//这里是要调用的文件名

    
if (!pModule)
        cout 
<< "err";

    handle
<>* _module; // Module handle.

    _module 
= new handle<>(pModule);

    
// 通过call_method
    int i = call_method<int>(_module->get() , "Hello" , 4);  

    
// 通过attr
    main_module.attr("Hello")(2);

    
// main_module.attr("Hello")(2); 展开如下
    object main_module(*_module);
    
object FunObj = main_module.attr("Hello");  // 获取hello函数对象

    
// 通过object父类的operator()操作符
    FunObj(1); 

    
// 通过call
    i = call<int>(FunObj.ptr(), 3);


    { 
// 遍历一遍python内置类型list对象中的值
        list  List = call_method<list>(_module->get() , "getList");

        
int n = len(List);

        
for (int i = 0 ; i < n ; i++)
        {
            int val = extract<int> (List[i]);  // 获取List[i]产生的object对象中的值,通过extract模板来转换
            cout << val << " ";
        }
    }


    
return 0;
}



posted on 2011-06-02 11:22 zhaoyg 阅读(449) 评论(0)  编辑 收藏 引用 所属分类: C++和Python

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理