C 呼叫python的簡單例子(一)

2021-08-20 15:19:26 字數 1930 閱讀 5907

在c++中使用python的時候,首先需要配置python的環境。

在此,我就不說明如何配置環境了,網路一搜都是配置方法。以下,我介紹下我在c++中是如何呼叫python的方法。

僅僅作為參考,有問題咱們可以一起交流。

第一步:python中的簡單應用函式

test.py

def additionfc(a , b):

c = a + b

return c

def subtractionfc(a , b):

c = a - b

return c

這個python中只包含了兩個簡單的例子。乙個是加法,乙個是減法。

現在需要用c++語言呼叫python中的兩個內容。

第一步:配置好python在c++中的環境。

在此省略。。。

第二步:新增python的宣告

#include "python.h"
第二步:初始化python介面

py_initialize();
第三步:初始化使用的變數

pyobject * pmodule = null;

pyobject * pfunc = null;

pyobject *pname = null;

這部分可以放到後面寫,寫到這裡完全是因為個人習慣的原因。

第四步:初始化python系統檔案路徑,保證可以訪問到 .py檔案 

pyrun_******string("import sys");
第五步:呼叫python檔名。

當前的測試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計算好的返回值

int  nresult ;

pyarg_parse(preturn, "i", &nresult);//i表示轉換成int型變數

在這裡,最需要注意的是:pyarg_parse的最後乙個引數,必須加上「&」符號。

第十步:結束python介面初始化

py_finalize();

好了,以上就是乙個簡單的c++中呼叫python的例子。

C語言 函式呼叫的簡單例子

includevoid p1 void p2 intmain 例題中p1和p2都是使用者定義的函式名,pl的功能是輸出一行星號,p2的功能是輸出一行文字。在定義這兩個函式時指定函式的型別為void 型別,意為函式無型別,即沒有函式返回值,也就是說,執行這兩個函式後不會把任何值帶回到main函式,p1...

C 編寫 呼叫 dll 簡單例子

c 建立dll 1.建立win32控制台程式,選擇dll 2.新增標頭檔案 標頭檔案中定義巨集 如下 ifdef dynamiclibrary exports 該dll的定義巨集工程屬性 c c preprocessor define dll def declspec dllexport 匯出 el...

C 呼叫儲存過程簡單完整例子

create proc p test name varchar 20 rowcount intoutput asbegin select from t customer where name name set rowcount rowcount endgo 儲存過程呼叫如下 declare iint...