Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Py_Main()似乎是一个NOOP_Python_C++_C_Windows - Fatal编程技术网

Python Py_Main()似乎是一个NOOP

Python Py_Main()似乎是一个NOOP,python,c++,c,windows,Python,C++,C,Windows,我正在使用Python 3.6在Windows上工作。我正在尝试制作一个wWinMain()图形用户界面 使用嵌入式python解释器的应用程序。我正在吃各种各样的食物 无法加载扩展模块的问题,但我将不深入讨论 现在,因为我已经追踪到了一个更简单的测试用例 开始时,考虑PythON.exe:< /P>的源代码 /* Minimal main program -- everything is loaded from the library. */ #include "Python.h" #de

我正在使用Python 3.6在Windows上工作。我正在尝试制作一个wWinMain()图形用户界面 使用嵌入式python解释器的应用程序。我正在吃各种各样的食物 无法加载扩展模块的问题,但我将不深入讨论 现在,因为我已经追踪到了一个更简单的测试用例

开始时,考虑PythON.exe:< /P>的源代码

/* 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);
}

> pythonw.exe source.py
这将生成具有预期输出的文件
hello.txt
。现在我创建一个 新的VisualStudio解决方案。如果是Win32项目,请选择“Windows” 我创建了一个新的源文件main.c和I 从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”并点击build。我打开cmd.exe,浏览到哪里 mything.exe是,并执行

> mything.exe source.py
但这一次什么也没发生。没有创建hello.txt。我没有撞车 窗口或错误消息。我不会被扔进调试器。我只是不知道 结果。我是不是遗漏了一些构建标志

我运行的是与pythonw.exe完全相同的C代码,但我的不是 工作有什么好处

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

您将主要函数称为什么?“主要”?温曼?程序需要一个入口点

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

如果您使用的是main,请尝试WinMain

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

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

如果你得到一个编译和运行的小应用程序,它什么也不做,但是有正确的入口点,并且你在那里添加了代码,那么你可能会更成功


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

您将主功能称为什么?“主要”?温曼?程序需要一个入口点

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

如果您使用的是main,请尝试WinMain

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

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

如果你得到一个编译和运行的小应用程序,它什么也不做,但是有正确的入口点,并且你在那里添加了代码,那么你可能会更成功


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

刚刚在python问题跟踪器中发布了一个bug:为了在调试模式下运行您的程序,您可以单步进入它,并至少大致了解正在发生的事情,您可以更改项目设置以包含要运行的命令行。任何
#include“Python.h”
都使用旧的蹩脚嵌入API,而不是新的:cffi。刚才在python问题跟踪器中也发布了一个bug:为了在调试模式下运行程序,您可以单步进入该模式并至少大致了解发生了什么,您可以更改项目设置以包含要运行的命令行。任何
#包括“python.h”
正在使用旧的蹩脚的嵌入API,而不是新的:cffi。问题包括守则;主函数是wWinMain(),它在AFAIK中完全有效。此外,如果构建工具找不到主函数,构建不是会失败吗?因此,当你说你复制了源代码时,你的意思不仅仅是函数的内容,而是整个文件?你有没有尝试在调试器中进入你的程序,看看它在做什么?我们无法从对问题的描述中看出这一点。我写的第一句话是弄清楚到底发生了什么的关键。当你知道发生了什么时,你可能拥有你所需要的所有信息。如果,当您看到发生的情况时,仍然不明白原因或如何修复它,您可以告诉我们您发现了什么,我们将尽力帮助您。OP没有提到显式更改字符集配置属性,因此可能是Unicode。但是我刚刚检查过(在VisualStudio2010上),即使选择了多字节字符集,wWinMain()也能很好地工作;主函数是wWinMain(),它在AFAIK中完全有效。此外,如果构建工具找不到主函数,构建不是会失败吗?因此,当你说你复制了源代码时,你的意思不仅仅是函数的内容,而是整个文件?你有没有尝试在调试器中进入你的程序,看看它在做什么?我们无法从对问题的描述中看出这一点。我写的第一句话是弄清楚到底发生了什么的关键。当你知道发生了什么时,你可能拥有你所需要的所有信息。如果,当您看到发生的情况时,仍然不明白原因或如何修复它,您可以告诉我们您发现了什么,我们将尽力帮助您。OP没有提到显式更改字符集配置属性,因此可能是Unicode。但我刚刚检查过(在Visual Studio 2010上),即使选择了多字节字符集,wWinMain()也能很好地工作。
> mything.exe source.py