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

C++通過內(nèi)嵌解釋器調(diào)用Python及間接調(diào)用Python三方庫

 更新時間:2021年12月30日 10:43:30   作者:Method.Jiao  
本文主要介紹了C++通過內(nèi)嵌解釋器調(diào)用Python及間接調(diào)用Python三方庫,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文章目的是脫離安裝Python環(huán)境的前提下,由C++程序調(diào)用Python程序及Python相關(guān)三方庫

1.移植Python解釋器

Python環(huán)境的目錄結(jié)構(gòu)

python環(huán)境

路徑詳解

需要用的如下圖
1.紅色部分是生成路徑下解釋器運行時依賴
將紅色部分拷貝到C++編譯主ExE路徑下即可
2.藍色部分是VS配置編譯時依賴

路徑或文件名 作用
DLLs Python內(nèi)部運行時核心及一些驅(qū)動
Lib 這里存放Python基礎(chǔ)類庫,開發(fā)人員所下載的Python三方庫也會放在此目錄下
python36.dll Python運行時主依賴

路徑或文件名 作用
include C++調(diào)用所依賴的頭文件,include時引用Python.h即可
libs C++調(diào)用所依賴的靜態(tài)描述文件,C++Dll隱式調(diào)用引用python36.lib即可

2.VS配置(VS2017為例,此教程與VS版本無關(guān))

這里我就寫絕對路徑為例
在這里插入圖片描述
記得將Dlls,Lib,python36.dll拷貝到生成目錄下,如果新增python三方庫,重新拷貝Lib文件夾或者進行whl安裝,這里就不做whl的介紹了

//在stdafx.cpp中
#pragma comment(lib,"python36.lib")

3.C++調(diào)用程序樣例

Py_Initialize();//加載Python解釋器
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('Dlls/')");

PyObject * pModule = NULL;
PyObject * pFunc = NULL;
PyObject *pArgs = NULL;
PyObject *pResult = NULL;
pModule = PyImport_ImportModule("ExternalPythonTool");//Python py文件名
if (pModule == nullptr)
	return true;
pFunc = PyObject_GetAttrString(pModule, "add_func");//py文件內(nèi)函數(shù)名
//傳入?yún)?shù)
pArgs = Py_BuildValue("ii", 1, 2);
//執(zhí)行函數(shù)
pResult = PyObject_CallObject(pFunc, pArgs);
//返回值為C++
double a = PyLong_AsDouble(pResult);

Py_Finalize();//卸載Python解釋器

Py_Initialize方法初始化消耗資源較大,不建議反復(fù)進行初始化及卸載。

4.被調(diào)Python程序樣例

簡單加法運算,并且調(diào)用了numpy裝載array,作為c++間接調(diào)用Python三方庫的測試

//ExternalPythonTool.py
import math
import numpy as np
def add_func(x,y):
    a = math.sqrt(9)
    data = [[1,2],[3,4],[5,6]]
    b = np.array(data)
    return x + y

將ExternalPythonTool.py也拷貝到C++exe運行路徑

教程到此結(jié)束,網(wǎng)上諸多教程沒有說明Dlls文件夾的作用,導(dǎo)致Python引用了如numpy 等三方庫后PyImport_ImportModule環(huán)節(jié)就會出錯,經(jīng)學(xué)習(xí)解釋器機理發(fā)現(xiàn)了Dlls內(nèi)pyd文件的作用,特此出一詳解教程希望和大家共同學(xué)習(xí)。

相關(guān)文章

  • python PIL/cv2/base64相互轉(zhuǎn)換實例

    python PIL/cv2/base64相互轉(zhuǎn)換實例

    今天小編就為大家分享一篇python PIL/cv2/base64相互轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python學(xué)生管理系統(tǒng)

    python學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python學(xué)生管理系統(tǒng)的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 創(chuàng)建SparkSession和sparkSQL的詳細(xì)過程

    創(chuàng)建SparkSession和sparkSQL的詳細(xì)過程

    SparkSession 是 Spark SQL 的入口,Builder 是 SparkSession 的構(gòu)造器。 通過 Builder, 可以添加各種配置,并通過 stop 函數(shù)來停止 SparkSession,本文給大家分享創(chuàng)建SparkSession和sparkSQL的詳細(xì)過程,一起看看吧
    2021-08-08
  • 解決python flask中config配置管理的問題

    解決python flask中config配置管理的問題

    今天小編就為大家分享一篇解決python flask中config配置管理的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python內(nèi)建模塊struct實例詳解

    Python內(nèi)建模塊struct實例詳解

    這篇文章主要介紹了Python內(nèi)建模塊struct實例詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python基礎(chǔ)之//、/與%的區(qū)別詳解

    python基礎(chǔ)之//、/與%的區(qū)別詳解

    在學(xué)習(xí)Python或者使用Python進行工作的時候,大家應(yīng)該都看到過“/”和“//”,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)之//、/與%區(qū)別的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 基于django ManyToMany 使用的注意事項詳解

    基于django ManyToMany 使用的注意事項詳解

    今天小編就為大家分享一篇基于django ManyToMany 使用的注意事項詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python實現(xiàn)Logger打印功能的方法詳解

    Python實現(xiàn)Logger打印功能的方法詳解

    最近工作中遇到了打印的需求,通過查找相關(guān)的資料發(fā)現(xiàn)Python中Logger可以很好的實現(xiàn)打印,所以下面這篇文章主要給大家介紹了關(guān)于Python如何實現(xiàn)Logger打印功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-09-09
  • Python實現(xiàn)基于KNN算法的筆跡識別功能詳解

    Python實現(xiàn)基于KNN算法的筆跡識別功能詳解

    這篇文章主要介紹了Python實現(xiàn)基于KNN算法的筆跡識別功能,結(jié)合實例形式詳細(xì)分析了使用KNN算法進行筆跡識別的相關(guān)庫引入、操作步驟與相關(guān)注意事項,需要的朋友可以參考下
    2018-07-07
  • Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計概述

    Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計概述

    這篇文章主要介紹了Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計,簡單描述了Python企業(yè)編碼生成系統(tǒng)的功能、結(jié)構(gòu)與相關(guān)編碼實現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07

最新評論

普兰县| 仪陇县| 突泉县| 华亭县| 哈密市| 越西县| 眉山市| 牙克石市| 孙吴县| 临夏县| 绥宁县| 海盐县| 万载县| 棋牌| 囊谦县| 陵水| 博湖县| 从江县| 明水县| 晋宁县| 讷河市| 泸州市| 土默特左旗| 奎屯市| 晋城| 临高县| 游戏| 建德市| 闽侯县| 昌江| 克什克腾旗| 西昌市| 岫岩| 喀喇沁旗| 通江县| 温泉县| 会宁县| 林口县| 新乡县| 长治县| 合作市|