您的位置:首页 > 编程语言 > C语言/C++

C++中调用python函数

2011-09-11 09:42 447 查看
以下是通过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++ list python object module ini