可以在没有Visual Studio的情况下使用MinGw编译python.exe

可以在没有Visual Studio的情况下使用MinGw编译python.exe,python,c++,c,visual-studio,mingw,Python,C++,C,Visual Studio,Mingw,我正在努力实现本页所述的目标: 我试图编译的代码如下: #include "Python.h" int wmain(int argc, wchar_t **argv) { return Py_Main(argc, argv); } 在VisualStudio 15中,我必须在项目中添加python/include并链接到python libs目录,还必须添加: #include "stdafx.h" 然后它编译并运行良好。我只是好奇,有没有可能用mingw或其他开源C/C++编译

我正在努力实现本页所述的目标:

我试图编译的代码如下:

#include "Python.h"

int
wmain(int argc, wchar_t **argv)
{
    return Py_Main(argc, argv);
}
在VisualStudio 15中,我必须在项目中添加python/include并链接到python libs目录,还必须添加:

#include "stdafx.h"
然后它编译并运行良好。我只是好奇,有没有可能用mingw或其他开源C/C++编译器来实现这一点

如果我放置一个包含以下内容的文件
my_python.cpp

#include "include/Python.h"

int
wmain(int argc, wchar_t **argv)
{
    return Py_Main(argc, argv);
}
在新安装的32位python 3.5(windows 7 x64)的根目录中,将cd插入该目录并尝试运行:

gcc my_python.cpp-Llibs-lpython35-o my_python.exe
我得到这个错误:

c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'

要解决此问题,请在没有Visual Studio的情况下运行它?

此错误与Python无关
wmain
是特定于Visual Studio的。GCC并没有将
wmain
视为入口点,它只是作为一个永远不会被调用的函数而存在

GCC需要
main
WinMain
作为入口点。如果这两个入口点都没有找到,那么编译器会抱怨。所以让我们使用
main
作为入口点

Py_Main
可能需要宽字符串输入
CommandLineToArgvW
将始终提供该功能。例如:

#include <Windows.h>
#include "include/Python.h"

int main()
{
    int argc;
    wchar_t** argv = CommandLineToArgvW( GetCommandLineW(), &argc );
    return Py_Main(argc, argv);
}

还要注意,
*.lib
文件通常用于Visual Studio。GCC版本要求库名具有
*.a
扩展名。

对于响应时间过长表示歉意。我确实尝试过这个,但得到的错误是“未定义对“\u imp\u Py\u Main”的引用。我认为这与您对.a和.lib文件的评论有关。我使用了pexports和dlltool来生成.a文件,但到目前为止还无法消除错误。如果我能找到答案,我将进一步更新
#include <Windows.h>
#include "include/Python.h"

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    int argc;
    wchar_t** argv = CommandLineToArgvW( GetCommandLineW(), &argc );
    return Py_Main(argc, argv);
}