C++-MFC(16)-調用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')



        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM