python - 编译 python 代码并将其链接到 C++ 程序?

标签 python c++

我很清楚存在允许 C 代码运行 python 代码的许多可能性,反之亦然(Cython、Boost.Python 等)。但是,除非我弄错了,否则所有这些方法都只是“调用”相关的 python 脚本并管理 C 程序和 python 脚本之间的交互。因此,需要安装python。

在我的情况下,我想要一个独立的解决方案,我的 python 代码可以以某种方式编译并链接到我的主 C++ 程序。我对 Cython 抱有希望,因为它允许我编译我的脚本并创建一个 .so 文件。但是,我似乎无法将该 .so 文件“链接”到我的 C++ 程序。我尝试了以下操作:

一个简单的 python 脚本,包含一个返回 a*b 的函数 multiply(a,b) ;我使用 cython 创建了一个 libmultiply.so 文件。 输出 multiply(5,2) 结果的简短 Cpp 文件:

int multiply(int, int);

int main()
{
    std::cout << multiply(5,2) << std::endl;
}

我通过做来构建:g++ test.cpp -L/home/jerome/-lmultiply

这给了我错误:

test.cpp:(.text+0x2b): undefined reference to `multiply(int, int)'
collect2: error: ld returned 1 exit status

我不确定我的尝试是否有意义,但希望它能让您了解我想要实现的目标。

最佳答案

Shed Skin是我能找到的最接近的东西。它将 Python 的类型化子集编译为 C++。可能没有您想要的那么健壮,但这是一个奇怪的用例。如果您想自己写点东西,可以查看 LLVM它已被用于创建与您想要的类似的东西。

编辑 1:

我刚刚在 github 上找到了这个很棒的 python 列表,Awesome-python , 它链接到 Pyston这是一个 python LLVM 实现。可能更适合您的需求或作为 Python 到 C++ 桥梁的起点。

关于python - 编译 python 代码并将其链接到 C++ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27486219/

相关文章:

python - Numpy 数组到张量

python - 图像颜色识别,通用颜色

python - 将变量从 python 脚本传递到 C 程序(命令行参数)

python - 如何使用 swig 包装器调用 C++ 类指针上的方法?

c++ - pantheios 输出到大小有限的日志文件

c++ - 为什么 cout 立即输出?

c++ - 在//C++ 注释中使用\\是否合法? (C++ 注释中的 LaTeX 方程)

python - 排除匹配的字符串 python re.findall

python - 制作一个行和列不相等的 pandas 数据框

c# - 使用 C# 的 EditStreamCallback,从 C++ 迁移