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')