我正在尝试使用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.这些是我正在做的步骤:
/MT
和添加预处理器定义Py_NO_ENABLE_SHARED
Static library (.lib)
,/ MT,代替预处理器定义Py_ENABLE_SHARED
与Py_NO_ENABLE_SHARED
构建摘要:
构建: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)