测试环境
Vs2022社区版本、python3.7
测试代码
python文件代码(hello.py)
# -*- encoding:utf-8 -*-
def hello():
print("hello world")
def add(a, b):
return a + b
MFC工程的c代码
#include <Python.h>
void CjsMFCPythonDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
Py_SetPythonHome((wchar_t*)L"C:\\ProgramData\\Anaconda3\\envs\\yolop\\");
Py_Initialize();//加载Python解释器
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
PyObject* pModule = NULL;
PyObject* pFunc = NULL;//py需要添加的函数名
PyObject* pArgs = NULL;//py需要传递的参数
PyObject* pResult = NULL;//py返回的结果数据
pModule = PyImport_ImportModule("hello");//Python py文件名
if (pModule == nullptr)printf("return true;\n");
pFunc = PyObject_GetAttrString(pModule, "add");//py文件内函数名
//传入参数
pArgs = Py_BuildValue("ii", 1, 2);
//执行函数
pResult = PyObject_CallObject(pFunc, pArgs);
//返回值为C++
int a = PyLong_AsDouble(pResult);
printf("%d", a);
Py_Finalize();//卸载Python解释器
}
从环境的搭建到代码的编写一站式带你完成(MFC工程的新建、c代码、python环境搭建和python脚本代码)。绝对保姆级教程,包教包会有任何问题可以随时联系本人相互学习交流。
请给一个赞,非常感谢!
免费获取源码工程:链接:https://pan.baidu.com/s/19adA_85LkFCqVqOoUYYxGQ?pwd=rxhi 提取码:rxhi
MFC调用python脚本