gpt4 book ai didi

python - Py_Main() 似乎是一个 NOOP

转载 作者:太空宇宙 更新时间:2023-11-04 04:22:15 25 4
gpt4 key购买 nike

我正在使用 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)

我选择“Debug | x64”并点击构建。我弹出打开 cmd.exe,浏览到哪里mything.exe 是,并执行

> mything.exe source.py

但是这次没有任何反应。没有创建 hello.txt。我没有崩溃窗口或错误消息。我不会被扔进调试器。我只是没有结果。我是否在这里遗漏了一些构建标志?

我正在运行与 pythonw.exe 完全相同的 C 代码,但我的不是在职的。给了什么?

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

最佳答案

您将主要功能命名为什么? “主要的”?主?该程序需要一个入口点。

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

如果您正在使用 main,请尝试 WinMain。

或者不将项目创建为一个空应用程序,而是创建一个具有应用程序骨架的项目。

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

如果您有一个可以编译和运行但什么都不做但具有正确入口点的小应用程序,并且您在其中添加代码,您可能会取得更大的成功。

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

关于python - Py_Main() 似乎是一个 NOOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45605948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com