在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...