在c++中使用python的時候,首先需要配置python的環境。
在此,我就不說明如何配置環境了,網路一搜都是配置方法。以下,我介紹下我在c++中是如何呼叫python的方法。
僅僅作為參考,有問題咱們可以一起交流。
第一步:python中的簡單應用函式
test.py
這個python中只包含了兩個簡單的例子。乙個是加法,乙個是減法。
defadditionfc
(a , b):
c = a + b
return c
defsubtractionfc
(a , b):
c = a - b
return c
現在需要用c++語言呼叫python中的兩個內容。
第一步:配置好python在c++中的環境。
在此省略。。。
第二步:新增python的宣告
#include
"python.h"
第二步:初始化python介面
py_initialize();
第三步:初始化使用的變數
這部分可以放到後面寫,寫到這裡完全是因為個人習慣的原因。
pyobject * pmodule =
null;
pyobject * pfunc =
null;
pyobject *pname =
null;
第四步:初始化python系統檔案路徑,保證可以訪問到 .py檔案
第五步:呼叫python檔名。
pyrun_******string(
「import sys」);
pyrun_******string(
當前的測試python檔名是test.py
pmodule = pyimport_importmodule(「test」);
在使用這個函式的時候,只需要寫檔案的名稱就可以了。不用寫字尾。
第六步:呼叫函式
在此,我僅呼叫乙個作為參考,另乙個呼叫方法是一樣的。
pfunc = pyobject_getattrstring(pmodule, 「additionfc」);
第七步:給python傳引數
pyobject *pargs = pytuple_new(2);//函式呼叫的引數傳遞均是以元組的形式打包的,2表示引數個數
這句**的意思是:我要給python這個函式傳入兩個引數。
如果additionfc中只有乙個引數時,寫1就可以了。這裡只介紹函式必須有引數存在的情況,沒有引數的情況會在後面章節中介紹的。
pytuple_setitem(pargs, 0, py_buildvalue(「i」, 2));
解釋:
0:表示序號。第乙個引數
i:表示傳入的引數型別時int型別
pytuple_setitem(pargs, 1, py_buildvalue(「i」, 4));
1:表示序號。第二個引數
第八步:使用c++的python介面呼叫該函式
pyobject *preturn = pyeval_callobject(pfunc, pargs);
第九步:接收python計算好的返回值
在這裡,最需要注意的是:pyarg_parse的最後乙個引數,必須加上「&」符號。
int nresult ;
pyarg_parse(preturn,
「i」, &nresult);
//i表示轉換成int型變數
第十步:結束python介面初始化
py_finalize();
以上就是乙個簡單的c++中呼叫python的例子。
C 定義乙個簡單的類及其呼叫
根據下列要求,編寫完整程式。設計乙個類,用於對10元整型陣列進行管理。要求 1 在定義物件時,能夠為陣列元素清0.2 定義成員函式input,用於為陣列元素輸入資料。3 定義成員函式disp,用於顯示陣列的每個元素值。4 定義成員函式max,用於找出陣列元素的最大值及其個數,其中最大值由函式值返回,...
用乙個簡單示例演示在python中呼叫C及C
2016年11月20日 05 15,by 舒彩光 只要會c語言程式設計就很容易為python新增新的內建模組。可以通的c的擴充套件模組做兩種事,一是實現新的內建物件型別。另乙個是呼叫c的庫函式與系統呼叫。為了支援c擴充套件,python api定義了一系列函式,變數及巨集。只要在c或c 裡引入 py...
乙個簡單的hello world交叉編譯實驗
交叉編譯,簡單地說,就是在乙個平台上生成另乙個平台上的可執行 下面就做乙個簡單的hello world實驗來完成這一過程。本實驗涉及兩台主機。a主機 安裝交叉編譯環境,並用來編譯原始檔。在本次實驗中使用的是虛擬機器ubuntu系統環境 b主機 arm架構平台開發板,用來執行a主機編譯好的可執行檔案,...