0

cython用来生成*.c文件,稍后用 MS Visual Studio 2017 编译为C/C++. 这一切都很好,除了所有 python*.lib都是动态链接的。由于我的目标是生成一个独立的 exe(大 exe 大小不是问题),我想问是否可以静态链接所有 Python *.lib. 我已经尝试指定\MT发布选项并在调试器包含上定义所有 Python 库。

python3.dll不幸的是,我所有的努力都是徒劳的,因为动态链接的可执行文件在复制到另一台计算机时找不到。目前我计划将整个 python 安装目录与可执行文件一起复制,并在编译时指定正确的包含链接。

因此,我对任何选项感兴趣,它存在,以生成一个独立的可移植可执行文件。

我会很感激你的帮助和建议。

4

1 回答 1

1

xaav 是正确的。

我无法发表评论,所以我会将其作为解决方案发布,希望它能引导您走上正确的道路。

Cython 的存在是有原因的。你得到你的 python 代码,添加一些更改和 bam,你的代码是 cythonized。

这有两个原因。混淆代码,它可以加速代码(取决于)。

为什么不使用 cython 和 pyinstaller?这是经过试验和测试的。Pyinstaller 甚至说它支持它。您采用的方法在理论上可以完成,但它过于复杂,甚至不需要。

可能的担忧:

但是他们不能窃取我的源代码吗?不,它是 cythonised 所以是的,但不容易。

我不能使用 Nuitka 吗?是的,如果您希望它有故障并且无法按预期工作。

图书馆怎么样,它们不能在另一台电脑上工作?规范文件的存在是有原因的。一些手动处理,这可以工作。

我不能编译成 c++ 然后让它独立吗?看看有多少未回答的问题和无法让它发挥作用的人。此外,当 pyinstaller 和 cython 存在并且做同样的事情时,也不需要它。Cython 得到广泛支持。感觉就像您正在以漫长而艰难的方式做事。

但是编译成 c++ 不会更容易。没办法,pyinstaller 已经完成了大部分的工作。您可能需要在这里和那里调整规范文件,否则这是唯一的方法。请记住,它也与 pyupdater 集成。

于 2017-12-12T03:09:20.470 回答