我很清楚存在允许 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/