python getchar函数_C++调用 python 函数及返回值的处理【元组,字符串...】

http://www.cnblogs.com/DxSoft/archive/2011/04/01/2002676.html

Python 脚本  py_test.py :

#coding:utf-8

def get_int( ):

a = 10

b = 20

return a + b

def get_str( s1, s2 ):

#return s1 + s2

#return 'Hello , TY'

return ('Hello, World', 10, 20)

C 函数:

#include

#include

#include

#pragma comment(lib, "python27_d.lib")

int main()

{

PyObject *pName, *pModule, *pDict, *pFunc, *pArgs, *pRetVal;

Py_Initialize();

if (!Py_IsInitialized())

return -1;

//load py script filename

PyRun_SimpleString("import sys");

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

pName = PyString_FromString("py_test");// py_test.py

pModule = PyImport_Import(pName);

if (!pModule){

printf("cant find py_test.py");

getchar();

return -1;

}

pDict = PyModule_GetDict(pModule);

if (!pDict) return -1;

//find function name

pFunc = PyDict_GetItemString(pDict, "get_str");

if (!pFunc || !PyCallable_Check(pFunc)){

printf("cant find function [add]");

getchar();

return -1;

}

//push args to stack

pArgs = PyTuple_New(2);

PyTuple_SetItem(pArgs, 0, Py_BuildValue("s", "Hello, "));

PyTuple_SetItem(pArgs, 1, Py_BuildValue("s", "C_Python"));

//call python function

pRetVal = PyObject_CallObject(pFunc, pArgs);

if (pRetVal == NULL){

printf("CalllObject return NULL");

return -1;

}

char* ret_str;

int w = 0 , h = 0;

//解析元组

PyArg_ParseTuple(pRetVal, "s,i,i",&ret_str, &w, &h);

printf("%s, %d, %d\n", ret_str, w, h);

//解析字符串

//printf("function return value:%s\r\n", PyString_AsString(pRetVal));

Py_DECREF(pName);

Py_DECREF(pArgs);

Py_DECREF(pModule);

Py_DECREF(pRetVal);

//close python

Py_Finalize();

getchar();

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值