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

c++调用python完整代码(开发环境vs2008)

2010-03-27 10:43 661 查看
// python_c++_test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

//#include "Python_h/Python.h"
/************************************************************************/
/* 运行函数
/* PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
/* PyAPI_FUNC(int) PyRun_AnyFileExFlags(FILE *, const char *, int, PyCompilerFlags *);
/* PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
/* PyAPI_FUNC(int) PyRun_SimpleFileExFlags(FILE *, const char *, int, PyCompilerFlags *);
/* PyAPI_FUNC(int) PyRun_InteractiveOneFlags(FILE *, const char *, PyCompilerFlags *);
/* PyAPI_FUNC(int) PyRun_InteractiveLoopFlags(FILE *, const char *, PyCompilerFlags *); */
/************************************************************************/
#ifdef WIN32
#include "Python_h/Python.h" //windows平台下
#else
#include "/usr/src/Python-2.4/Include/Python.h" //linux平台下
#endif

int _tmain(int argc, _TCHAR* argv[])
{
PyObject *pName,*pModule,*pDict,*pFunc,*pArgs,*pValue;
Py_Initialize();
//设置环境变量
#ifdef WIN32
PyRun_SimpleString("import sys");//python执行字符串
PyRun_SimpleString("sys.path.append('./Python_script')");
// PyRun_SimpleString("import os");
// PyRun_SimpleString("import string");

#endif
//加载模块
pModule=PyImport_ImportModule("aaa");
//pArgs=PyObject_CallMethod(pModule,"max","ii",2,3);

//获取函数
pFunc=PyObject_GetAttrString(pModule,"max");
//调用函数
pArgs=PyObject_CallFunction(pFunc,"ii",10,80);

printf("%d",PyLong_AsLong(pArgs));
Py_Finalize();

/************************************************************************/
/* 以下是另一种加载python模块的方法
//pName=PyString_FromString("test");
//pModule=PyImport_Import(pName);

//pDict = PyModule_GetDict(pModule);

//pFunc = PyDict_GetItemString(pDict, "max");

////参数进栈
//pArgs=PyTuple_New(2);
////设置参数值
//PyTuple_SetItem(pArgs, 0, Py_BuildValue("i",10));
//PyTuple_SetItem(pArgs, 1, Py_BuildValue("i",15));
////调用函数
//pValue=PyObject_CallObject(pFunc, pArgs);
//查找函数
//pFunc = PyDict_ GetItemString_r(pDict, "max");

*/
/************************************************************************/
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: