最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

將Python代碼嵌入C++程序進(jìn)行編寫的實(shí)例

 更新時(shí)間:2015年07月31日 15:56:13   作者:watermelon  
這篇文章主要介紹了將Python代碼嵌入C++程序進(jìn)行編寫的實(shí)例,盡管通常還是Python代碼中調(diào)用C++程序的情況較多...需要的朋友可以參考下

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

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

常用的一些C API函數(shù)

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

    在調(diào)用任何python的c函數(shù)之前需要調(diào)用的函數(shù),“Py_Initialize”是用來初始化python模塊的,推測是加載初始化加載dll的。對應(yīng)的在使用python模塊之后用“Py_Finalize”來釋放模塊。

PyImport_ImportModule()

    用來載入一個(gè)python模塊,這個(gè)模塊就是一般的python文件。這里需要注意的是,在加載這個(gè)模塊的時(shí)候會(huì)執(zhí)行模塊里面所有可以執(zhí)行的語句。包括import導(dǎo)入語句和在函數(shù)體之外的所有語句

PyObject_GetAttrString()

    返回模塊里面的函數(shù)

Py_BuildValue()

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

PyEval_CallObject()

    調(diào)用函數(shù),并把“Py_BuildValue”建立的元組作為參數(shù)傳遞給被調(diào)用的函數(shù)

源碼實(shí)例

下面的實(shí)例是在c++代碼中調(diào)用Python的函數(shù),傳遞參數(shù)并且獲取返回值

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)

相關(guān)文章

  • Django網(wǎng)絡(luò)框架之HelloDjango項(xiàng)目創(chuàng)建教程

    Django網(wǎng)絡(luò)框架之HelloDjango項(xiàng)目創(chuàng)建教程

    這篇文章主要介紹了Django網(wǎng)絡(luò)框架之HelloDjango項(xiàng)目創(chuàng)建,結(jié)合實(shí)例形式詳細(xì)分析了Django框架創(chuàng)建HelloDjango項(xiàng)目的具體步驟與詳細(xì)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-06-06
  • 實(shí)例詳解python函數(shù)的對象、函數(shù)嵌套、名稱空間和作用域

    實(shí)例詳解python函數(shù)的對象、函數(shù)嵌套、名稱空間和作用域

    這篇文章主要介紹了python函數(shù)的對象、函數(shù)嵌套、名稱空間和作用域 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Python 迭代器工具包【推薦】

    Python 迭代器工具包【推薦】

    迭代器工具在產(chǎn)生數(shù)據(jù)的時(shí)候?qū)?huì)顯得非常便捷、高效,掌握了這些基本的方法之后,通過簡單的組合就可以獲得更多迭代器工具。
    2016-05-05
  • python目標(biāo)檢測yolo2詳解及預(yù)測代碼復(fù)現(xiàn)

    python目標(biāo)檢測yolo2詳解及預(yù)測代碼復(fù)現(xiàn)

    這篇文章主要為大家介紹了python目標(biāo)檢測yolo2詳解及其預(yù)測代碼復(fù)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python快速編寫單行注釋多行注釋的方法

    python快速編寫單行注釋多行注釋的方法

    在本篇文章里小編給大家整理的是關(guān)于python快速編寫單行注釋多行注釋的方法,有此需要的朋友們可以參考學(xué)習(xí)下。
    2019-07-07
  • python新手經(jīng)常遇到的17個(gè)錯(cuò)誤分析

    python新手經(jīng)常遇到的17個(gè)錯(cuò)誤分析

    這篇文章主要介紹了python新手經(jīng)常遇到的17個(gè)錯(cuò)誤分析,需要的朋友可以參考下
    2014-07-07
  • 使用python腳本自動(dòng)生成K8S-YAML的方法示例

    使用python腳本自動(dòng)生成K8S-YAML的方法示例

    這篇文章主要介紹了使用python腳本自動(dòng)生成K8S-YAML的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 初窺Python門縫了解入門路徑

    初窺Python門縫了解入門路徑

    Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的Guido van Rossum 于1990 年代初設(shè)計(jì),作為一門叫做ABC語言的替代品。 Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊?/div> 2021-10-10
  • Django  ORM 練習(xí)題及答案

    Django ORM 練習(xí)題及答案

    這篇文章主要介紹了Django ORM 練習(xí)題及答案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python實(shí)現(xiàn)單向鏈表

    Python實(shí)現(xiàn)單向鏈表

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)單向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論

屏边| 高雄县| 江油市| 嘉黎县| 个旧市| 江安县| 石棉县| 三明市| 镇安县| 安化县| 中超| 绵竹市| 永城市| 彰化县| 林芝县| 长垣县| 西吉县| 海安县| 开阳县| 富锦市| 安仁县| 沙湾县| 建平县| 绍兴县| 淮滨县| 古丈县| 陈巴尔虎旗| 吕梁市| 旬邑县| 洛川县| 祁连县| 鸡西市| 嫩江县| 扬州市| 株洲市| 新丰县| 屯留县| 山东| 伊金霍洛旗| 九龙县| 台山市|