python - Py_Main()似乎是一个NOOP

我正在使用Python 3.6的Windows。我正在尝试制作wWinMain()GUI
使用嵌入式python解释器的应用程序。我有各种各样
无法加载扩展模块的问题,但我不会讨论
现在,因为我已将问题归结为一个简单得多的测试用例。

首先,请考虑pythonw.exe的源代码:

/* Minimal main program -- everything is loaded from the library. */

#include "Python.h"

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

int WINAPI wWinMain(
    HINSTANCE hInstance,      /* handle to current instance */
    HINSTANCE hPrevInstance,  /* handle to previous instance */
    LPWSTR lpCmdLine,         /* pointer to command line */
    int nCmdShow              /* show state of window */
)
{
    return Py_Main(__argc, __wargv);
}

现在考虑一个简单的python脚本,我将其保存在source.py中
f = open('C:\\Users\\rutski\\Desktop\\hello.txt', 'w')
f.write('Hello World!\n')
f.flush()
f.close()

并与
> pythonw.exe source.py

这将生成具有预期输出的文件 hello.txt。现在我创建一个
新的Visual Studio解决方案。我将其制作为Win32项目,选择“Windows
应用程序”和“空项目”。我创建了一个新的源文件main.c,然后
从pythonw复制粘贴源代码(使用Py_Main等)。现在我
添加以下设置:
C:\Users\rutski\Documents\python\PCbuild\amd64 --- Library Search Directory
C:\Users\rutski\Documents\python\Include       --- Include Directory
C:\Users\rutski\Documents\python\PC            --- Include Directory (for pyconfig.h)

我选择“调试| x64”,然后点击构建。我弹出打开cmd.exe,浏览到哪里
mything.exe是的,并执行
> mything.exe source.py

但是这次没有任何反应。没有hello.txt被创建。我没有崩溃
窗口或错误消息。我不会陷入调试器中。我不知道
结果。我在这里缺少一些构建标志吗?

我正在运行与pythonw.exe相同的 相同的C代码,但我的不是
加工。是什么赋予了?

我什至无法让Py_Main()从我的内部执行一些python代码
自己的应用程序,因此尝试编写自己的嵌入代码基本上是没有希望的。

最佳答案

您称您的主要职能是什么? “主要”? WinMain?该程序需要一个入口点。

要查看发生了什么,请在调试器中运行该程序,然后尝试逐步进行调试。我怀疑它可能无法进入您的“主要”功能。

如果使用main,请尝试使用WinMain。

或者将项目创建为非空应用程序,而是将其与应用程序框架一起创建。

看起来像您使用它的方式,最好的选择是让向导为您创建控制台应用程序。

如果为您提供了一个小型应用程序,该应用程序可以编译,运行并且不执行任何操作,但是具有正确的入口点,然后在其中添加代码,则可能会获得更大的成功。

如果您特别想使用“main”,并且创建控制台应用程序不是一个足够的解决方案,那么this link可能会有所帮助。