亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++調用Python基礎功能實例詳解

2020-05-23 13:47:28
字體:
來源:轉載
供稿:網友

c++調用Python首先安裝Python,以win7為例,Python路徑為:c:/Python35/,通過mingw編譯c++代碼。

編寫makefile文件,首先要添加包含路徑:

inc_path += c:/Python35/include

然后添加鏈接參數:

ld_flag += c:/Python35/libs/libpython35.a

在源文件中添加頭文件引用:

#include "Python.h"

Python解釋器需要進行初始化,完成任務后需要終止:

void start(){  int r=Py_IsInitialized(); //1為已經初始化了  if (r==0)  {    //Py_SetPythonHome(L"C://Python35");    Py_Initialize(); //初始化    p_main_Module =PyImport_ImportModule("__main__");    if (!p_main_Module)    {      throw "";    }  }}void end(){  Py_Finalize(); //清理}

程序部署時可以將c:/Python35/lib目錄復制到執行程序路徑下,或者通過Py_SetPythonHome(L"C://Python35");設置Python的安裝目錄。

C++調用Python的基本需求:

1、運行Python指令

PyRun_SimpleString("print(os.getcwd(),a)");pyext.eval(R"(a+='qwer')");

2、加載Python模塊

PyObject * pModule =PyImport_ImportModule("tp"); //test:Python文件名,若腳本有錯則返回空PyRun_SimpleString("import os");

3、給Python的變量賦值

對于數值,使用Py_BuildValue:

Py_BuildValue("") NonePy_BuildValue("i", 123) 123Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)Py_BuildValue("s", "hello") 'hello'Py_BuildValue("ss", "hello", "world") ('hello', 'world')Py_BuildValue("s#", "hello", 4) 'hell'Py_BuildValue("()") ()Py_BuildValue("(i)", 123) (123,)  Py_BuildValue("(ii)", 123, 456) (123, 456)Py_BuildValue("(i,i)", 123, 456) (123, 456)Py_BuildValue("[i,i]", 123, 456) [123, 456]Py_BuildValue("{s:i,s:i}", "abc", 123, "def", 456) {'abc': 123, 'def': 456}

對于其他數據結構,使用相應的函數設置,例如:

PyObject *pArgs = PyTuple_New(1);PyObject *pDict = PyDict_New();  //創建字典類型變量 PyDict_SetItemString(pDict, "Name", Py_BuildValue("s", "WangYao")); //往字典類型變量中填充數據 PyDict_SetItemString(pDict, "Age", Py_BuildValue("i", 25)); //往字典類型變量中填充數據 PyTuple_SetItem(pArgs, 0, pDict);//0---序號 將字典類型變量添加到參數元組中 

構造好對象以后,通過PyObject_SetAttrString來設置進入Python中:

PyObject *ps=PyUnicode_DecodeUTF8(val,strlen(val),"ignore"); //構造了一個對象PyObject_SetAttrString(p_main_Module,key,ps); //設置

4、獲取Python變量的值

首先取得變量的指針,然后通過PyArg_Parse解析

pModule =PyImport_ImportModule("__main__");pReturn = PyObject_GetAttrString(pModule, "a"); //可以獲得全局變量int size = PyDict_Size(pReturn); PyObject *pNewAge = PyDict_GetItemString(pReturn, "Age"); int newAge;PyArg_Parse(pNewAge, "i", &newAge); 

對于元組的解析:

int ok;ok = PyArg_ParseTuple(args, "s", &s); //Python call: f('whoops!')ok = PyArg_ParseTuple(args, "lls", &k, &l, &s);//Python call: f(1, 2,'three')ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);//Python call: f((1, 2), 'three')ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);//Python calls://f('spam')//f('spam', 'w')//f('spam', 'wb', 100000)

5、調用Python函數

PyObject * pfun=PyObject_GetAttrString(pModule, "testdict"); //testdict:Python文件中的函數名PyObject *pReturn = PyEval_CallObject(pfun, pArgs); //調用函數

 6、設置函數讓Python調用

首先定義c函數,然后聲明方法列表,然后聲明模塊,然后增加這個模塊,最后調用

static int numargs=1890;static PyObject* emb_numargs(PyObject *self, PyObject *args) //C函數{  if(!PyArg_ParseTuple(args, ":numargs"))    return NULL;  return PyLong_FromLong(numargs);}static PyMethodDef EmbMethods[] = { //方法列表  {"numargs", emb_numargs, METH_VARARGS,   "Return the number of arguments received by the process."},  {NULL, NULL, 0, NULL}};static PyModuleDef EmbModule = { //模塊聲明  PyModuleDef_HEAD_INIT, "emb", NULL, -1, EmbMethods,  NULL, NULL, NULL, NULL};static PyObject* PyInit_emb(void) //模塊初始化函數{  return PyModule_Create(&EmbModule);}//增加模塊:PyImport_AppendInittab("emb", &PyInit_emb); //增加一個模塊

Python部分代碼:

import embprint("Number of arguments", emb.numargs())

以上所述是小編給大家介紹的C++調用Python基礎功能實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品成人久久电影| 精品国产一区二区三区久久久狼| 亚洲免费影视第一页| 成人免费视频网址| 亚洲精品影视在线观看| 色综合老司机第九色激情| 亚洲免费电影一区| 黄色成人av网| 亚洲男人天堂网| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲一二三在线| 欧美激情va永久在线播放| 久久九九免费视频| 欧日韩不卡在线视频| 欧美激情免费看| 国产亚洲精品美女| 5252色成人免费视频| 最近2019中文字幕第三页视频| 国产精品日日做人人爱| 亚洲成年网站在线观看| 亚洲国产精品国自产拍av秋霞| 日韩精品极品在线观看播放免费视频| 欧美在线日韩在线| 国产美女久久精品| 欧美国产日韩二区| 亚洲成av人乱码色午夜| 国产精品揄拍一区二区| 国产女人18毛片水18精品| 欧美又大又硬又粗bbbbb| 国产一区二区三区视频免费| 欧美激情高清视频| 黑人巨大精品欧美一区免费视频| 日韩在线观看免费网站| 国产精品入口夜色视频大尺度| 国产成人精品av在线| 午夜精品久久久久久久99热浪潮| 欧美精品激情blacked18| 日韩毛片在线观看| 欧美日韩亚洲天堂| 国内精品小视频| 亚洲免费高清视频| 欧美精品九九久久| 久久6免费高清热精品| 欧美精品午夜视频| 亚洲欧美国产另类| 中文字幕视频一区二区在线有码| 亚洲国产精品嫩草影院久久| 国产成人精品久久亚洲高清不卡| 国a精品视频大全| 最新的欧美黄色| 亚洲专区在线视频| 成人av在线天堂| 欧美韩国理论所午夜片917电影| 51视频国产精品一区二区| 亚洲一级黄色片| 国产精品视频久| 夜夜嗨av一区二区三区免费区| 久久久精品日本| 欧美日韩福利视频| 亚洲欧美成人精品| 亚洲香蕉av在线一区二区三区| 亚洲综合在线播放| 超在线视频97| 深夜精品寂寞黄网站在线观看| 欧美专区第一页| www.xxxx欧美| 在线观看日韩www视频免费| 国产精品无码专区在线观看| 国产欧美一区二区三区在线看| 91国内揄拍国内精品对白| 性欧美办公室18xxxxhd| 九九久久精品一区| 亚洲一区二区福利| 亚洲免费伊人电影在线观看av| …久久精品99久久香蕉国产| 色av中文字幕一区| 国产欧美精品一区二区三区-老狼| 中文字幕欧美日韩精品| 蜜月aⅴ免费一区二区三区| 久久久亚洲精品视频| 中文一区二区视频| 国产一区二区三区直播精品电影| 国产精品pans私拍| 日韩av有码在线| 亚洲欧洲日本专区| 亚洲欧洲在线看| 日韩欧美亚洲综合| 午夜精品久久久久久久99热| 欧美日韩亚洲成人| 亚洲欧美日韩一区二区在线| 久久久精品在线观看| 韩国精品美女www爽爽爽视频| 伊人久久久久久久久久久久久| 欧美在线免费视频| 中文字幕亚洲欧美日韩在线不卡| 欧美一级淫片丝袜脚交| 成人激情视频在线播放| 欧美大奶子在线| 亚洲天堂色网站| 久久久久久国产精品美女| 成人h视频在线观看播放| 日韩欧美国产成人| 久久久在线观看| 7m精品福利视频导航| 欧美在线观看www| 日韩精品中文字幕有码专区| 国产有码在线一区二区视频| 色先锋资源久久综合5566| 亚洲欧美在线免费| 久久的精品视频| 日韩第一页在线| 精品久久久久久久久久久久| 欧美午夜片欧美片在线观看| 日韩av成人在线观看| 97国产真实伦对白精彩视频8| 欧美日韩一区二区三区在线免费观看| 欧美激情亚洲另类| 欧美激情国产日韩精品一区18| 国产精品福利无圣光在线一区| 色999日韩欧美国产| 日韩一级黄色av| 日韩精品在线视频观看| 久久的精品视频| 青青草一区二区| 亚洲在线第一页| 91青草视频久久| 午夜精品理论片| 97成人在线视频| 日韩精品中文字幕有码专区| 国产日韩中文字幕| 色樱桃影院亚洲精品影院| 最新国产精品拍自在线播放| 亚洲精品美女久久久| 午夜精品www| 亚洲free性xxxx护士白浆| 亚洲国产一区二区三区在线观看| 中文字幕日韩av综合精品| 亚洲91精品在线观看| 国产精品日韩一区| 亚洲美女性生活视频| 全色精品综合影院| 欧美日韩另类在线| 久久久999国产精品| 亚洲人成绝费网站色www| 亚洲自拍另类欧美丝袜| 97免费视频在线| 日韩a**站在线观看| 久久中国妇女中文字幕| 国产精品夫妻激情| 国产亚洲成av人片在线观看桃| 亚洲第一区在线| 97国产成人精品视频| 北条麻妃在线一区二区| 色悠悠国产精品| 在线中文字幕日韩| 久久精品免费播放| 日韩h在线观看| 欧美男插女视频| 国产精品视频自在线| 国产国语videosex另类| 国产精品欧美激情| 中文一区二区视频| 日韩激情第一页| 色偷偷噜噜噜亚洲男人的天堂|