C++ 技术中心

   :: 首页 :: 联系 ::  :: 管理
  158 Posts :: 0 Stories :: 85 Comments :: 0 Trackbacks

公告

郑重声明:本BLOG所发表的原创文章,作者保留一切权利。必须经过作者本人同意后方可转载,并注名作者(天空)和出处(CppBlog.com)。作者Email:coder@luckcoder.com

留言簿(17)

搜索

  •  

最新随笔

最新评论

评论排行榜

1.当取多个返回值时,如下:
def mix(a, b) :  
    r1 
= a + b  
    r2 
= a - b  
    
return (r1, r2) # (7,3)

c++代码如下:
#include "python.h"
int _tmain(int argc, _TCHAR* argv[])
{
string filename = "cal"; // cal.py
string methodname_mix = "mix"; // function name

Py_Initialize();

// load the module
PyObject * pyFileName = PyString_FromString(filename.c_str());
PyObject
* pyMod = PyImport_Import(pyFileName);

// load the function
PyObject * pyFunc_mix = PyObject_GetAttrString(pyMod, methodname_mix.c_str());

// test the function is callable
if (pyFunc_mix && PyCallable_Check(pyFunc_mix))
{
PyObject
* pyParams = PyTuple_New(2);
PyTuple_SetItem(pyParams,
0, Py_BuildValue("i", 5));
PyTuple_SetItem(pyParams,
1, Py_BuildValue("i", 2));

// ok, call the function
int r1 = 0, r2 = 0;
PyObject
* pyValue = PyObject_CallObject(pyFunc_mix, pyParams);
PyArg_ParseTuple(pyValue,
"i|i", &r1, &r2);
if (pyValue)
{
printf(
"%d,%d\n", r1, r2); //output is 7,3
}

}

 
Py_Finalize();

return 0;
}

2.如果返回一个值时:
import string

def AddMult(a, b):
c
= a + b
print c
return c


c++代码如下: 
PyObject* pModule =NULL;
PyObject
* pFunc = NULL;
PyObject
* pArgs = NULL;
PyObject
* pRet = NULL;

Py_Initialize();

PyRun_SimpleString(
"import sys");
PyRun_SimpleString(
"sys.path.append('./')");

pModule
= PyImport_ImportModule("httpsend");
pFunc
= PyObject_GetAttrString(pModule, "AddMult");

//pArgs = Py_BuildValue("s, s", "This is ", "a python code");

pArgs
= Py_BuildValue("ii", 12,34);

pRet
= PyObject_CallObject(pFunc,pArgs);
int pyResult=0,pyResult2 = 0;
char *str;
int argRet = PyArg_Parse(pRet,"i", &pyResult);
if (argRet)
{
printf(
"yes!\n");
}

else
{
//错误
printf("error!\n");
}


if(pModule)
Py_DECREF(pModule);
if(pFunc)
Py_DECREF(pFunc);
if(pArgs)
Py_DECREF(pArgs);
if(pRet)
Py_DECREF(pRet);


//PyGILState_Ensure();
Py_Finalize();


posted on 2013-12-06 10:02 C++技术中心 阅读(3035) 评论(0)  编辑 收藏 引用 所属分类: 其他编程

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