gpt4 book ai didi

c++ - 将python编译成共享库

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:30 31 4
gpt4 key购买 nike

我有一堆 python 代码,我想将它们“编译”到一个带有 C 接口(interface)的共享库中,该接口(interface)可以与其他 C/c++ 程序链接,并且无需依赖太多其他库(可能是 python 和一些其他 dll,但它们都应包含在包含最终 lib 的目录中)。

我真的不想为此将 python 代码重写为 C++。我当然可以,但最好有一个独立的库,可以像 dll/so 库一样使用。

我已经尝试过 cython 并想将 python 编译为 C,然后将 C 代码编译为一个 dll,但这似乎还不能正常工作(我还不能让它完美地工作)。然后我也尝试了 bbfreeze - 但 bbfreeze 是否支持创建 .so 文件?无法找出如何去做。有人知道吗?

您是否知道其他更直接的选择? python代码只需要编译一次。最好的是,如果它创建一个单一的 .so 文件,无论它有多大,都可以在没有太多依赖的情况下工作。

最佳答案

您可以在 C++ 应用程序中将 Python 用作库:它称为 Python/C API .

这个想法是您初始化自己的解释器,然后在其中加载脚本。您可以通过 Python 解释器内的全局变量或模块公开您的 C++ 对象,以便您的代码与之交互,您可以直接从您的 C++ 代码运行 Python 函数。

现在,我了解到您可能希望将 Python 脚本嵌入到共享库中:使用传统的 GNU 工具链,这不一定是一项简单的任务。有multiple techniques实现这一目标,但没有一个是官方的,而且与仅将脚本放在外部文件中相比,一切似乎都太复杂了。

如果您的目标是对最终用户隐藏脚本,您可以对它们进行签名或使用私钥加密并将公钥嵌入您的库中,但请记住,任何人都可以轻松检索该 key 有足够的动力。

关于c++ - 将python编译成共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15844383/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com