// 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;
}