国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

將Python代碼嵌入C++程序進行編寫的實例

2019-11-25 17:06:28
字體:
來源:轉載
供稿:網友

把python嵌入的C++里面需要做一些步驟

    安裝python程序,這樣才能使用python的頭文件和庫
    在我們寫的源文件中增加“Python.h”頭文件,并且鏈入“python**.lib”庫(還沒搞清楚這個庫時靜態庫還是導出庫,需要搞清楚)
    掌握和了解一些python的C語言api,以便在我們的c++程序中使用

常用的一些C API函數

在了解下面的函數之前有必要了解一下**PyObject***指針,python里面幾乎所有的對象都是使用這個指針來指示的。
Py_Initialize()&&Py_Finalize()

    在調用任何python的c函數之前需要調用的函數,“Py_Initialize”是用來初始化python模塊的,推測是加載初始化加載dll的。對應的在使用python模塊之后用“Py_Finalize”來釋放模塊。

PyImport_ImportModule()

    用來載入一個python模塊,這個模塊就是一般的python文件。這里需要注意的是,在加載這個模塊的時候會執行模塊里面所有可以執行的語句。包括import導入語句和在函數體之外的所有語句

PyObject_GetAttrString()

    返回模塊里面的函數

Py_BuildValue()

    建立一個參數元組,一般都是用這個函數來建立元組,然后將這個元組作為參數傳遞給python里面的函數。

PyEval_CallObject()

    調用函數,并把“Py_BuildValue”建立的元組作為參數傳遞給被調用的函數

源碼實例

下面的實例是在c++代碼中調用Python的函數,傳遞參數并且獲取返回值

test.cpp代碼

#include <iostream>#include <Python.h>using namespace std;int main(int argc, char* argv[]){  Py_Initialize();  //初始化  PyObject* pModule = NULL;  PyObject* pFunc = NULL;  PyObject* pParam = NULL;  PyObject* pResult = NULL;  const char* pBuffer = NULL;  int iBufferSize = 0;  pModule = PyImport_ImportModule(“test_python");  if (!pModule)  {    cout << "get module failed!" << endl;    exit (0);  }  pFunc = PyObject_GetAttrString(pModule, "main");  if (!pFunc)  {    cout << "get func failed!" << endl;    cout << int(pFunc) << endl;    exit (0);  }  pParam = Py_BuildValue("(s)", "HEHEHE");  pResult = PyEval_CallObject(pFunc,pParam);  if(pResult)  {    if(PyArg_Parse(pResult, "(si)", &pBuffer, iBufferSize))    {      cout << pBuffer << endl;      cout << iBufferSize << endl;    }  }  Py_DECREF(pParam);  Py_DECREF(pFunc);  Py_Finalize();  //cout << "hello" << endl;  return 0;}

test_python.py代碼

def main(szString):  return ("hello", 5)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 聊城市| 岢岚县| 巨鹿县| 兴文县| 双桥区| 德化县| 本溪市| 谢通门县| 桃江县| 新乡市| 涿州市| 鹤庆县| 左贡县| 华坪县| 凤凰县| 五台县| 论坛| 杂多县| 深泽县| 连南| 罗江县| 布尔津县| 都安| 新绛县| 成武县| 吉木乃县| 吉林省| 大理市| 贞丰县| 界首市| 石渠县| 霍邱县| 大兴区| 镇巴县| 商城县| 乌拉特后旗| 昭觉县| 图片| 社会| 马鞍山市| 阿图什市|