热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MFC中调用Python

VS项目设置,设置编译环境1.c调用python需要在vs2010中的cpp文件中加入,这个头文件在python安装目录Python
VS项目设置,设置编译环境

 

1. c++调用python需要在vs2010中的cpp文件中加入,这个头文件在python安装目录Python\include下

要成功引入就要把Python.h的头文件目录(如D:\python3.4.2\include放在菜单 > 项目 > 属性 > C/C++ > 常规 > 附加包含目录下

(或者右键项目)

 

2. 还需要一个python34.lib,如果不导入的话,会提示你出现这个文件的缺失。文件在python\libs下,找到此文件之后进入VS2010,菜单 >项目 > 属性 > 配置属性 > VC++目录 > 库目录,把刚才的绝对路径(如D:\python3.4.2\libs)添加进去,此时变成这样的了:D:\python3.4.2\libs;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib。这样就可以在VC程序中执行python文件了。

或者把D:\python3.4.2\libs放进项目 > 属性 > 配置属性 > 链接器 > 常规 > 附加库目录中。

Note: 上面的设置是对某个模式生效,如果将运行模式从debug改成了release,要再进去设置,否则设置不成功。

 

Debug模式下,python/libs目录下的Python34.lib需要复制并重名为Python34_d.lib的形式

 

对python头文件python/include/pyconfig.h进行修改:

# if defined(_DEBUG)
# pragma comment(lib,"python34_d.lib")
# elif defined(Py_LIMITED_API)
# pragma comment(lib,"python3.lib")
# else
# pragma comment(lib,"python34.lib")
# endif /* _DEBUG */

 

将DEBUG条件下的lib由python34_d.lib改为python34.lib.

# if defined(_DEBUG)
# pragma comment(lib,"python34.lib")

 

配置管理器修改

 

活动解决方案配置为Debug,活动解决方案平台为x64,基本要默认为这两项才可以,不然可尝试多种平台组合方案

 

 

 

代码例子

 

void CMakeSimulateDlg::CallPython(CString &strFilePath)
{string filename="dealFile";string methodname = "getFileAfter";string expression = strFilePath.GetBuffer();Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化PyObject * pModule = NULL;//声明变量PyObject * pFunc = NULL;// 声明变量PyObject * pArgs = NULL;//声明变量PyObject * pRet = NULL;//声明变量PyObject * pyFileName = PyString_FromString(filename.c_str());PyObject * pyMod = PyImport_Import(pyFileName);PyObject * pyFunc_mix = PyObject_GetAttrString(pyMod, methodname.c_str());PyObject * pyParam = PyTuple_New(1);PyObject * pyValue = PyString_FromString(expression.c_str());PyTuple_SetItem(pyParam, 0, pyValue);pRet = PyObject_CallObject(pyFunc_mix, pyParam);Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。return ;
}

 

深圳程序员交流群550846167

 


推荐阅读
author-avatar
fuck__镇豪_152
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有