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 是一種使用非常廣泛的計算機程式語言。...