C++-MFC(16)-VS2019-调用Python程序

VS2019+Python3.7
1.VS中配置
   添加头文件 Python.h:       属性 >  C/C++ > 常规 >附加包含目录下            D:\ProgramData\Python\Python37\include
   添加动态库 python34.lib: 属性 > 配置属性 > VC++目录 > 库目录              D:\ProgramData\Python\Python37\libs
                                              属性 > 配置属性 > 链接器 > 常规 > 附加库目录 D:\ProgramData\Python\Python37\libs

设置时要注意上面的配置选项
2.调用方法
    2.1运行每行python语句

#include "stdafx.h"
#include<Python.h>

void main(){
    Py_Initialize(); /*初始化python解释器,告诉编译器要用的python编译器*/
    PyRun_SimpleString("import helloworld"); /*调用python文件*/
    PyRun_SimpleString("helloworld.printHello()");/*调用python文件中的函数*/
    Py_Finalize(); /*结束python解释器,释放资源*/
    system("pause");
}

  2.2 运行函数
 

#include<Python.h>//前面所做的一切配置都是为了调用这个头文件和相关库
#include<iostream>
using namespace std;
int main(){
Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化
PyObject * pModule = NULL;//声明变量
PyObject * pFunc = NULL;// 声明变量
pModule =PyImport_ImportModule("helloworld");//这里是要调用的文件名
pFunc= PyObject_GetAttrString(pModule, "Hello");//这里是要调用的函数名
PyEval_CallObject(pFunc, NULL);//调用函数
Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。
return 0;
}

2.3 运行与调用
       2.3.1 python是解释型语言,exe调用的是.pyc文件

        
        如果少.pyc文件,exe无法加载python 文件
      2.3.2 当.py文件修改时,只要不改函数名,只改函数内容,无需重编译。
       
      改py文件,重新生成.pyc,重启exe即可
      2.3.3 如果没有.pyc 用下面的方法生成
       

#单个文件
import py_compile
py_compile.compile('pymodule.py')
'''
compile(file, cfile=None, dfile=None, doraise=False, optimize=-1)
有5个参数:
file:必选参数,要编译的源文件
cfile:编译后的文件,默认在源文件目录下的__pycache__/源文件名.解释器类型-python版本.字节码类型
###例如:__pycache__/abc.cpython-34.pyo
dfile:错误消息文件,默认和cfile一样
doraise:是否开启异常处理,默认False
optimize:优化字节码级别
py_compile.compile('pymodule.py', 'D:/pythonPrj/MyMfcPy/x64/Release/pymodule.pyc', None, False, -1)
'''

#批量生成
import compileall
compileall.compile_dir(r'/path')



        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值