樽中酒不空
分类: c/c
2013-08-05 16:09:08
一 编译安装
1 下载安装python2.7 32位版本,安装 2 下载boost .7z压缩包 ,按32位方式编译 (如果python是64位的话,经常出现py_nostruct链接错误。) 二 测试嵌入程序: 很多sample只是简单使用c 调用python的函数或类执行某个动作,对于返回值说明的比较少。这里主要讲解返回多个值的处理。 1 新建console工程 2 代码如下: #include
using namespace boost::python;
using namespace std;
void exec_test()
{
object main = import("__main__");
object global(main.attr("__dict__"));
object result = exec(
"def greet(): \n"
" var='a,b,c,d'.split(',') \n"
" return len(var),var \n", //这里返回两个值,一个是数量,另一个是字符串链表
global, global);
object greet = global["greet"];
object r = greet(); //执行函数,返回的是数组
int ll = extract
for (int i = 0; i < ll; i )
{
string message = extract
cout << message << endl;
}
}
int _tmain(int argc, _tchar* argv[])
{
py_initialize ();//初始化python环境
if(!py_isinitialized())
{
cout<<"------python初始化失败"<
return 0;
}
try
{
exec_test();
}
catch(...)
{
if (pyerr_occurred())
pyerr_print();
}
return 0;
}
|