python版本
: python2.7.1
MFC工程开发环境: VS2008
安装python解释器后,默认安装在C盘,目录如下
目录中有DLLs, include,Lib,libs等。
MFC DLL中嵌入python的方法:
在MFC
扩展DLL中嵌入python,这里采用的对动态库Python27.dll 的静态链接方式。
在MFC
DLL工程中加入对python include目录下头文件的引用,添加对python27.lib链接。
可以参考其它帖子介绍C/C++中嵌入python的方法:
先初始化 :
Py_Initialize();
下面这个操作对后续做python免安装包比较重要:
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('.\')");
把python文件作为一个module加载:
PyObject *pModule =
PyImport_ImportModule("modulename");
获取python脚本中的函数:
PyObject_GetAttrString(pModule ,"funcname");
调用函数,给函数传参数时要根据实际情况组合使用不同的接口:
若函数参数是list,PyObject
*pyParams = PyList_New(nNum);
PyObject *pArg = Py_BuildValue("I", pData[i]);
(要注意数据类型)
PyList_SetItem(pyParams, i, pArg);
PyObject *args = PyTuple_New(1);
PyTuple_SetItem(args,0,pyParams);
PyObject *pyValue =PyEval_CallObject(m_pGetFuncNameByAddressFunc,
args);
若返回也是list:
Py_ssize_t funcNameNum =PyList_Size(pyValue);
for
(int j = 0;j < funcNameNum;j++)
{
PyObject
*pyVal = PyList_GetItem(pyValue,j);
if
(pyVal == NULL)
{