MFC中调用Python

VS项目设置,设置编译环境

 

1. c++调用python需要在vs2010中的cpp文件中加入<Python.h>,这个头文件在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

 

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ToF君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值