繁体   English   中英

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

[英]Compile python code and link it to C++ program?

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

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

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

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

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

棚屋皮肤是我能找到的最接近的东西。 它将Python的类型化子集编译为c ++。 可能没有你想要的那么强大,但这是一个奇怪的用例。 如果您想自己编写一些内容,可以查看已经用于创建类似于您想要的内容的LLVM

编辑1:

我刚刚在github, Awesome-python上找到了这个令人敬畏的python内容列表,它链接到Pyston ,这是一个python LLVM实现。 可能更适合您想要的内容或Python to C ++桥接的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM