C++中调用python函数

C++中调用python函数

以下是通过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 ;
}



你可能感兴趣的:(C++中调用python函数)