You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在MFC中嵌入Python:Windows嵌入包无python.h的调用方案咨询

解决方案

关于Python嵌入包的限制

Windows Python嵌入包是面向直接运行Python脚本的分发包,本身不包含开发所需的python.h头文件和链接库,所以无法直接调用Py_Initialize()、PyRun_SimpleString()这类C API函数,默认只能通过启动python.exe的方式执行脚本。

两种实现路径

1. 用C API调用(和本地安装Python时的方式一致)

如果一定要用C API,需要补充开发文件,步骤如下:

  • 下载对应版本的32位Python安装包(不是嵌入包),安装后找到安装目录下的include文件夹(含python.h)和libs文件夹(含python3xx.lib,xx对应版本号)
  • 将include和libs里的文件复制到你的MFC项目目录,在项目属性中配置:
    • 包含目录添加include路径
    • 库目录添加libs路径
    • 链接器输入中添加python3xx.lib
  • 打包时,把嵌入包里的python3xx.dll、python.exe及相关依赖文件(如vcruntime140.dll等)和你的MFC程序放在一起,用户无需安装Python即可运行

2. 通过进程调用嵌入包的python.exe

如果接受进程调用的方式,直接用嵌入包即可,步骤如下:

  • 将32位Python嵌入包解压到你的MFC程序的输出目录
  • 用CreateProcess或ShellExecuteEx(比system()更可控)启动python.exe执行脚本,示例代码:
    SHELLEXECUTEINFO sei = {0};
    sei.cbSize = sizeof(SHELLEXECUTEINFO);
    sei.fMask = SEE_MASK_NOCLOSEPROCESS;
    sei.lpVerb = _T("open");
    sei.lpFile = _T("python.exe");
    sei.lpParameters = _T("your_script.py"); // 替换为你的脚本路径
    sei.nShow = SW_HIDE; // 可选:隐藏控制台窗口
    if (ShellExecuteEx(&sei)) {
        WaitForSingleObject(sei.hProcess, INFINITE); // 等待脚本执行完成
        CloseHandle(sei.hProcess);
    }
    

内容的提问来源于stack exchange,提问作者呂澤阜

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:52:11