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

Python与C++进行交互

2014-08-17 08:51 239 查看
版本 Python 2.6

IDE Microsoft Visual Studio 2008

C++调用Python脚本

1.

Py_Initialize() 初始化Python,两者要对应。

Py_Finalize() 清理Python

2. 导入Python模块

PyObject *pModule = PyImport_ImportModule("testHello");

注意: 不要加上.py, VC环境不要用test的文件名。

3. 获取Python脚本内的函数

PyObject *pFunc = PyObject_GetAttrString(pModule, "Hello");

4. 调用Python函数, 无参数

PyEval_CallObject(pFunc, NULL);

5. 调用Python函数,传参数

PyObject *pArgs = Py_BuildValue("(s)", "thank you all the same");

注意: 传递的格式必须是tuple元组。也就是要加上()。否则就脚本异常。

6. 处理返回值

PyEval_CallObject调用后会返回。

PyObject *pResult = PyEval_CallObject(pFunc, pArgs);

返回一个整型,使用&。

int i = 0;

PyArg_Parse(pResult, "i", &i);

返回一个浮点型

float d = 0.1f;

PyArg_Parse(pResult, "f", &d);

返回一个字符串

char* s = "";

PyArg_Parse(pResult, "s", &s);

注意: 在C/C++内,如果直接将&s写成s,是可以的。

但在与Python 2.6交互时,要写成&s,是指针的指针。否则将

产生异常。

7. 每一个PyObject* 记得在不需要时用Py_DECREF要销毁。

8. 返回值是Tuple元组数据

返回值是List列表数据

返回值是Dict字典数据

PyTuple_New 新建元组

PyTuple_Size 获取元组大小

PyTuple_GetItem 获取单条元素

PyTuple_SetItem 插入新元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: