有什麼書講python和c 互相呼叫

2021-04-18 23:09:07 字數 1825 閱讀 2962

1樓:匿名使用者

pythond的官方手冊有將c++在python中的相應介面

至於c++呼叫python還不太清楚

怎樣讓python指令碼與c++程式互相呼叫

2樓:好程式設計師

二、python呼叫c/c++

1、python呼叫c動態連結庫

python呼叫c庫比較簡單,不經過任何封裝打包成so,再使用python的ctypes呼叫即可。

(1)c語言檔案:pycall.c

[html] view plain copy

/***gcc -o libpycall.so -shared -fpic pycall.c*/

#include

#include

int foo(int a, int b)

(2)gcc編譯生成動態庫libpycall.so:gcc -o libpycall.

so -shared -fpic pycall.c。使用g++編譯生成c動態庫的**中的函式或者方法時,需要使用extern "c"來進行編譯。

(3)python呼叫動態庫的檔案:pycall.py

[html] view plain copy

import ctypes

ll = ctypes.cdll.loadlibrary

lib = ll("./libpycall.so")

lib.foo(1, 3)

print '***finish***'

(4)執行結果:

2、python呼叫c++(類)動態連結庫

需要extern "c"來輔助,也就是說還是隻能呼叫c函式,不能直接呼叫方法,但是能解析c++方法。不是用extern "c",構建後的動態連結庫沒有這些函式的符號表。

(1)c++類檔案:pycallclass.cpp

[html] view plain copy

#include

using namespace std;

class testlib

; void testlib::display()

int main()

char *reverse(char *s)

return(s);

} int main()

上述**中有兩個函式,一個是遞迴求階乘的函式fac();另一個reverse()函式實現了一個簡單的字串反轉演算法,其主要目的是修改傳入的字串,使其內容完全反轉,但不需要申請記憶體後反著複製的方法。

(2)用樣板來包裝**

介面的**被稱為「樣板」**,它是應用程式**與python直譯器之間進行互動所必不可少的一部分。樣板主要分為4步:a、包含python的標頭檔案;b、為每個模組的每一個函式增加一個型如pyobject* module_func()的包裝函式;c、為每個模組增加一個型如pymethoddef modulemethods的陣列;d、增加模組初始化函式void initmodule()。

怎麼在python和c++之間互相互動資料

請教程式設計高手一個python與c++相互呼叫的問題

3樓:匿名使用者

python 我不懂,瞭解過,似乎是解釋型語言,不過有py2exe這東西,

如果你知道python的結構體在記憶體中的組織形式,那你把資料的記憶體組織形式告訴我,我可以給你封裝一個庫,這個庫提供c++介面接收你的結構體引數

如果你自己懂某一操作平臺下的c++底層實現(懂彙編就ok),這問題分分鐘搞定

如果你懂python的底層實現,你根本不會遇到這種問題!!!!

c語言a和a有什麼區別,C語言中 a 和 a 有什麼區別

1 本質區別 雙引抄號襲 裡面的是字串,而單引號裡面的代表字元。2 輸出區別 str a 輸出的就是a這個字母 str a 輸出的測試65 3 底層區別 用單引號引起的一個字元實際上代表一個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。1 用 對包bai含的du 代表字元常量,其zhi值為...

Python中檔案編輯下r和r有什麼區別還有w和w

r是隻讀不寫,w是隻寫不讀 r w 大同小異,都是可讀可寫。區別是r 讀寫不存在的檔案會報錯,w 在檔案不存在的情況下會自動建立檔案。mode 檔案不存在 檔案存在 讀 寫 流位置 r ioerror 只讀 ioerror beginning w 建立 截空truncate ioerror 只寫 b...

vc 和c 有什麼區別,VC 與C 有什麼區別和聯絡?

c 是一種標準 一般由ansi來規範 vc 是一種實際存在的語言,由微軟公司設計開發。microsoft visual c 簡稱visual c msvc vc 或vc 微軟公司的c 開發工具,具有整合開發環境,可提供編輯c語言,c 以及c cli等程式語言。c 是一種使用非常廣泛的計算機程式語言。...