簡體   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