C 呼叫Python模組

2021-08-31 16:26:08 字數 2250 閱讀 2343

一:環境vs2015,python3.7,windows 64位作業系統

三:新建vs控制台工程,並在工程目錄下建立pymodule.py檔案

四:編寫pymodule.py檔案,**如下:

def retnum():

return 12345

def retdouble():

return 12345.6789

def retstring():

return "hello,world!"

def retustring():

return "你好,中國!".encode("gb18030")

def retlist():

return [1,2,3,4,5]

def rettuple():

return (1,2,"hello,world!")

def retdict():

d = dict()

d[1] = "c"

d[2] = "c++"

d[3] = "python"

return d

五:編寫c++檔案,呼叫python模組。

//#include "stdafx.h"

#include #include using namespace std;

int main()

pfunc = pyobject_getattrstring(pmodule, "retnum"); //呼叫retnum函式,返回整型

if (pfunc && pycallable_check(pfunc))

pfunc = pyobject_getattrstring(pmodule, "retdouble"); //呼叫retdouble,返回double型別

pret = pyobject_callobject(pfunc, null);

cout << pyfloat_asdouble(pret) << endl;

pfunc = pyobject_getattrstring(pmodule, "retstring"); //呼叫retstring,返回ansi字串

pret = pyobject_callobject(pfunc, null);

cout << pyunicode_asutf8(pret) << endl;

pfunc = pyobject_getattrstring(pmodule, "retustring"); //呼叫retustring,返回unicode字串

pret = pyobject_callobject(pfunc, null);

cout << pybytes_asstring(pret) << endl;

pfunc = pyobject_getattrstring(pmodule, "retlist"); //呼叫retlist,返回陣列型別。

pret = pyobject_callobject(pfunc, null);

_int64 val_num = pylist_size(pret);

for (int i = 0; i < val_num; i++)

cout << endl;

pfunc = pyobject_getattrstring(pmodule, "rettuple"); //呼叫rettuple,返回tuple型別

int w = 0, h = 0;

char *ret_str;

pret = pyobject_callobject(pfunc, null);

pyarg_parsetuple(pret, "iis", &w, &h, &ret_str); //多個值必須一一對應

cout << w << " " << h << " " << ret_str << endl;

pfunc = pyobject_getattrstring(pmodule, "retdict"); //呼叫retdict,返回dict型別

pret = pyobject_callobject(pfunc, null);

pyobject* pkeys = pydict_keys(pret);

pyobject* pvalues = pret;

_int64 longlist = pydict_size(pret);

for (int i = 0; i < longlist; i++)

py_finalize();

system("pause");

return 0;}

C 呼叫Python模組

當下,c 與python都是比較熱門的計算機程式語言,他們各有優缺點,如果能讓他們互相配合工作,那是多麼美好的事情,今天我來講解一下如何利用c 來呼叫python。如果讓c 支援呼叫python模組,我們首先需要安裝一些擴充套件,這裡推薦使用ironpython庫。第二步,我們新建乙個c 窗體專案,...

C 呼叫 Python模組

vs2013 python27 x86 1 引入標頭檔案和庫 將python安裝目錄下的include和libs資料夾引入到專案中 將libs目錄下的python27.lib複製乙份為python27 d.lib 2 測試指令碼 python指令碼如下 def hello print hello d...

Python 模組呼叫

模組 py 字尾的檔案即模組 類 使用class語句封裝乙個類 函式 使用def語句封裝乙個函式 變數 使用賦值語句賦值乙個變數 模組中不但可以直接存放變數,還能存放函式,還能存放類。還可以使用自己寫的模組 其實就是字尾名為.py的檔案 通過這個語句可以從模組中匯入指定的部分到當前的模組。例如 檔案...