小编Cza*_*zak的帖子

CPython源代码 - 如何构建STATIC python26.lib?

我正在尝试使用Cython将我的hello.pyx文件编译为exe.

第一步是使用命令"cython --cplus --embed hello.pyx"将hello.pyx编译成hello.cpp文件.Embed选项意味着Generate a main() function that embeds the Python interpreter.我正在尝试创建一个没有依赖项的独立exe.

hello.cpp我有一个#include "Python.h",所以我从这里下载的Python来源:http://www.python.org/download/releases/2.6.6/,选择Gzip压缩源焦油球(2.6.6) .我添加了包含dir并获取有关缺少Python26.lib的错误.所以我想编译它.默认构建创建python26.lib,但它只有200 KB,这不是一个静态库,在尝试编译hello.cpp时我得到了缺少的引用错误.

在README中,我没有看到任何有关如何静态构建它的有用指令.但是,我搜索了一个在线README文件,在trunk(3.x)中有最新版本的python,有一些关于静态构建的有用信息:

http://svn.python.org/projects/python/trunk/PCbuild/readme.txt

该解决方案没有静态库的配置.但是,它很容易构建一个静态库而不是DLL.您只需将"配置类型"设置为"静态库(.lib)"并将预处理器宏"Py_ENABLE_SHARED"更改为"Py_NO_ENABLE_SHARED".您可能还必须将"运行时库"从"多线程DLL(/ MD)"更改为"多线程(/ MT)".

但是这里仍然没有太多细节,我是否将解决方案中的所有项目都设置为静态库?还是只有pythoncore?"Python"和"Pythonw"项目是"应用程序",因此我只能将运行时库更改为/ MT.这些是我正在做的步骤:

  • 更改为"发布"模式.
  • Project"Python" - 设置/MT和添加预处理器定义Py_NO_ENABLE_SHARED
  • 项目"Pythoncore" -构型到Static library (.lib),/ MT,代替预处理器定义Py_ENABLE_SHAREDPy_NO_ENABLE_SHARED
  • Project"Pythonw" - 与"Python"中的相同.
  • 我右键单击"Python"构建.

构建摘要:

构建:5成功,1失败,0最新,0跳过

kill_python (ok)
make_buildinfo (ok)
make_versioninfo (ok)
pythoncore (ok)
w9xpopen (ok)
python (4 errors)
Run Code Online (Sandbox Code Playgroud)

失败的项目是"Python",这是日志:

------ Build started: Project: python, Configuration: …
Run Code Online (Sandbox Code Playgroud)

python cpython compilation cython static-linking

5
推荐指数
1
解决办法
1986
查看次数

标签 统计

compilation ×1

cpython ×1

cython ×1

python ×1

static-linking ×1