使用 python 和 c++ 的 Windows 应用程序

Posted

技术标签:

【中文标题】使用 python 和 c++ 的 Windows 应用程序【英文标题】:Windows application using python and c++ 【发布时间】:2020-07-31 18:00:27 【问题描述】:

我想开始使用我自己的 Windows 软件。我知道python,我正在学习c++。如何使用 c++ 编写的前端和 python 的后端创建 Windows 软件? 我知道这是可能的,因为搅拌机也是用 c++ 和 python 编写的

【问题讨论】:

你遇到了一个大问题。 Python 语言是解释型的,需要解释器才能运行。 C++ 语言编译为本机代码。 Python 可以调用 C++ 代码。让 C++ 应用程序调用 Python 代码更加困难。恕我直言,请使用一种语言。 @Thomas Matthews 我想要/需要同时使用两者的原因是因为 python 对前端不是很好,而 c++ 对后端不是最好的 您的问题可能会被否决,因为听起来您正在请求教程。对于 Stack Overflow 答案,教程或说明可能太长。人们还希望看到代码和有关代码的问题。 @Thomas Matthews 我不是要教程,但我要的是指导方针,以便我可以找到教程 阅读 cpython 文档here中的教程 【参考方案1】:

您可以将 Python 嵌入到 C++ 中。

Documentation

嵌入 Python 的最简单形式是使用非常高级的接口。该接口旨在执行 Python 脚本,而无需直接与应用程序交互。例如,这可用于对文件执行某些操作。

#define PY_SSIZE_T_CLEAN
#include <Python.h>

int
main(int argc, char *argv[])

    wchar_t *program = Py_DecodeLocale(argv[0], NULL);
    if (program == NULL) 
        fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
        exit(1);
    
    Py_SetProgramName(program);  /* optional but recommended */
    Py_Initialize();
    PyRun_SimpleString("from time import time,ctime\n"
                    "print('Today is', ctime(time()))\n");
    if (Py_FinalizeEx() < 0) 
        exit(120);
    
    PyMem_RawFree(program);
    return 0;

【讨论】:

以上是关于使用 python 和 c++ 的 Windows 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用在 windows shell 下运行的 Python 解释器编译 C++ 代码

使用 pipe() 和 fdopen() 将数据从 Python 脚本传递到 Windows 中的 C++ 应用程序

C++开发python windows版本的扩展模块示例

Windows下python使用SWIG调用C++ dll (转)

在 Cygwin/GCC C++ 程序中嵌入 Windows Python

将 Python 嵌入到 C++ 应用程序中,无论是不是安装了 Python(在 Windows 上)