可以编译python.exe没有visualstudio,有了MinG

2024-09-24 00:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力实现本页所述的目标: https://blogs.msdn.microsoft.com/pythonengineering/2016/04/26/cpython-embeddable-zip-file/

我要编译的代码如下:

#include "Python.h"

int
wmain(int argc, wchar_t **argv)
{
    return Py_Main(argc, argv);
}

在VisualStudio15中,我必须在项目中添加python/include和到python libs目录的链接,还需要添加:

^{pr2}$

然后编译并运行良好。我只是好奇,有可能用MIWW或者其他开源C/C++编译器来实现这一点吗?在

如果我放置一个文件my_python.cpp,其中包含以下内容:

^{3}$

在新安装的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'

有没有办法解决这个问题,让它在没有visualstudio的情况下运行?在


Tags: https目录com目标includemycppmicrosoft
1条回答
网友
1楼 · 发布于 2024-09-24 00:29:10

这个错误与Python无关。wmain是visualstudio特有的。GCC不把wmain作为入口点,它只是作为一个永远不会被调用的函数。在

GCC要求main或{}作为入口点。如果这两个入口点都找不到,编译器就会抱怨。所以让我们使用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);
}

如果仍然出现相同的错误,只需提供WinMain入口点,使其满意

^{pr2}$

另请注意,*.lib文件通常用于visualstudio。GCC版本需要扩展名为*.a的库名。在

相关问题 更多 >