可以在没有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);
}