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

VS2022+Python3.11實(shí)現(xiàn)C++調(diào)用python接口

 更新時(shí)間:2023年12月04日 10:16:56   作者:編碼小哥  
在C/C++中嵌入Python,可以使用Python提供的強(qiáng)大功能,通過嵌入Python可以替代動(dòng)態(tài)鏈接庫形式的接口,本文主要介紹了VS2022+Python3.11實(shí)現(xiàn)C++調(diào)用python接口,感興趣的可以了解一下

查了一些資料,不是報(bào)這個(gè)錯(cuò),就是報(bào)哪個(gè)錯(cuò),沒有找到和我安裝的環(huán)境的一致的案例,于是將自己的摸索分享出來。

一、環(huán)境準(zhǔn)備

1、Visual Studio 2022,下載地址:https://visualstudio.microsoft.com/zh-hans/downloads/

2、Python版本是3.11,下載地址:https://www.python.org/downloads/

3、安裝Visual Studio 2022和Python3.11

安裝過程簡(jiǎn)單,此處不再贅述,我們的重點(diǎn)是看如何實(shí)現(xiàn)接口調(diào)用的。

二、配置Visual Studio 2022

安裝好環(huán)境后,使用Visual Studio 2022創(chuàng)建一個(gè)新項(xiàng)目,我這里取名c++python。需要配置3個(gè)地方:

1、右擊項(xiàng)目名稱-->屬性,選擇VC++目錄,根據(jù)python安裝路徑,配置包含目錄庫目錄。python安裝路徑怎么查看?打開cmd,輸入python回車,使用如下兩個(gè)命令即可看到python路徑。

>>> import sys
>>> sys.path

將python安裝路徑下的include文件夾和libs文件夾復(fù)制到剛才新建的項(xiàng)目c++python目錄下,配置如圖所示:

2、右擊項(xiàng)目名稱-->屬性,選擇C/C++下的常規(guī),配置附加包含目錄,加上項(xiàng)目中include的路徑,如圖所示:

3、右擊項(xiàng)目名稱-->屬性,選擇鏈接器下的輸入,配置附加依賴項(xiàng),將項(xiàng)目中的libs目錄中python311.lib復(fù)制一份,改名為python311_d.lib,附加依賴項(xiàng)的內(nèi)容填寫C:\Users\source\repos\c++python\libs\python311_d.lib;如圖所示:

三、編寫python代碼和C++代碼

1. 首先,創(chuàng)建一個(gè)名為test_python.py的Python文件,內(nèi)容如下:

def add(a, b):
    return a + b

2. 然后,創(chuàng)建一個(gè)名為main.cpp的C++文件,內(nèi)容如下:

#include <iostream>
#include <Python.h>

int main() 
{
    /*初始化python*/
    Py_Initialize();

    /*初始化python系統(tǒng)文件路徑,否則加載不到要調(diào)用的test_python.py文件*/
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");

    /*加載要調(diào)用的python文件名稱,當(dāng)前測(cè)試文件名稱:test_python.py*/
    PyObject* pName = PyUnicode_DecodeFSDefault("test_python");

    PyObject* pModule = PyImport_Import(pName);

    Py_XDECREF(pName);

    if (pModule != NULL) 
    {
        /*加載python模塊中的函數(shù)*/
        PyObject* pFunc = PyObject_GetAttrString(pModule, "add");

        if (PyCallable_Check(pFunc)) 
        {
            /*給pythonm模塊中的函數(shù)add傳遞2個(gè)參數(shù),以元組的形式傳遞*/
            PyObject* pArgs = PyTuple_New(2);

            /*給add函數(shù)傳遞第一個(gè)參數(shù)6*/
            PyTuple_SetItem(pArgs, 0, PyLong_FromLong(6));
            /*給add函數(shù)傳遞第二個(gè)參數(shù)10*/
            PyTuple_SetItem(pArgs, 1, PyLong_FromLong(10));
            /*C++的python接口調(diào)用add函數(shù),返回計(jì)算結(jié)果*/
            PyObject* pValue = PyObject_CallObject(pFunc, pArgs);

            Py_XDECREF(pArgs);

            if (pValue != NULL) 
            {
                /*打印計(jì)算結(jié)果*/
                std::cout << "\n " << std::endl;
                std::cout << "Result of call: " << PyLong_AsLong(pValue) << std::endl;
                std::cout << "\n " << std::endl;

                Py_XDECREF(pValue);

            }
            else 
            {
                PyErr_Print();
            }
        }
        else 
        {
            if (PyErr_Occurred()) 
            {
                PyErr_Print();
            }

            fprintf(stderr, "Cannot find function \"add\"");
        }

        Py_XDECREF(pFunc);

        Py_XDECREF(pModule);
    }
    else 
    {
        PyErr_Print();

        fprintf(stderr, "Failed to load \"%s\"", "test");

        return 1;
    }

    /*結(jié)束python初始化*/
    Py_Finalize();

    return 0;
}

test_python.py和main.cpp在同一目錄,如圖所示:

3. 編譯

1>正在生成代碼

1>Previous IPDB not found, fall back to full compilation.

1>All 16 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.

1>已完成代碼的生成

1>c++python.vcxproj -> C:\Users\source\repos\c++python\x64\Release\c++python.exe

========== “全部重新生成”: 1 成功,0 失敗,0已跳過 ==========

========== 占用時(shí)間 00:02.052 ==========

4. 點(diǎn)擊菜單"調(diào)試-->開始執(zhí)行(不調(diào)試)運(yùn)行,可以看到輸出結(jié)果:

到此這篇關(guān)于VS2022+Python3.11實(shí)現(xiàn)C++調(diào)用python接口的文章就介紹到這了,更多相關(guān)C++調(diào)用python接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python調(diào)用百度OCR實(shí)現(xiàn)圖片文字識(shí)別的示例代碼

    Python調(diào)用百度OCR實(shí)現(xiàn)圖片文字識(shí)別的示例代碼

    這篇文章主要介紹了Python調(diào)用百度OCR實(shí)現(xiàn)圖片文字識(shí)別的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • centos系統(tǒng)升級(jí)python 2.7.3

    centos系統(tǒng)升級(jí)python 2.7.3

    CentOS上安裝的python版本是2.6,不能滿足我運(yùn)行軟件的要求,所以對(duì)python進(jìn)行升級(jí)。Python的最新版本已經(jīng)是3.3,但是Python3的兼容性可能還有一定的問題,所以還是升級(jí)到2.7較為保險(xiǎn)。
    2014-07-07
  • Python+Selenium瀏覽器自動(dòng)化測(cè)試與網(wǎng)頁自動(dòng)登錄

    Python+Selenium瀏覽器自動(dòng)化測(cè)試與網(wǎng)頁自動(dòng)登錄

    在日常開發(fā)、測(cè)試和辦公自動(dòng)化中,我們經(jīng)常會(huì)遇到一些重復(fù)性的瀏覽器操作,如果這些操作每天都要重復(fù)執(zhí)行,手動(dòng)處理不僅浪費(fèi)時(shí)間,還容易因?yàn)槁c(diǎn)、輸錯(cuò)、忘記截圖而出錯(cuò),本文面向Python自動(dòng)化測(cè)試初學(xué)者,通過一個(gè)完整案例講解如何使用Selenium自動(dòng)打開網(wǎng)頁
    2026-05-05
  • Python可視化工具Plotly的應(yīng)用教程

    Python可視化工具Plotly的應(yīng)用教程

    對(duì)于Python語言來說,比較傳統(tǒng)的數(shù)據(jù)可視化模塊是Matplotlib,但它存在不夠美觀、靜態(tài)性、不易分享等缺點(diǎn),限制了Python在數(shù)據(jù)可視化方面的發(fā)展。為了解決這個(gè)問題,新型的動(dòng)態(tài)可視化開源模塊Plotly應(yīng)運(yùn)而生。本文將為大家詳細(xì)介紹Plotly的用法,需要的可以參考一下
    2021-12-12
  • 解決Python requests 報(bào)錯(cuò)方法集錦

    解決Python requests 報(bào)錯(cuò)方法集錦

    這篇文章主要介紹了解決Python requests 報(bào)錯(cuò)方法集錦的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 利用pyuic5將ui文件轉(zhuǎn)換為py文件的方法

    利用pyuic5將ui文件轉(zhuǎn)換為py文件的方法

    今天小編就為大家分享一篇利用pyuic5將ui文件轉(zhuǎn)換為py文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 基于python爬取梨視頻實(shí)現(xiàn)過程解析

    基于python爬取梨視頻實(shí)現(xiàn)過程解析

    這篇文章主要介紹了基于python爬取梨視頻實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 在 Python 中進(jìn)行 One-Hot 編碼

    在 Python 中進(jìn)行 One-Hot 編碼

    這篇文章主要介紹了在 Python 中進(jìn)行 One-Hot 編碼,? 在計(jì)算機(jī)科學(xué)的許多分支中,尤其是機(jī)器學(xué)習(xí)和數(shù)字電路設(shè)計(jì)中,One-Hot Encoding 被廣泛使用,下文我們就來實(shí)操在 Python 中進(jìn)行 One-Hot 編碼吧,需要的朋友可以參考一下
    2022-02-02
  • 關(guān)于Python調(diào)用百度語音合成SDK實(shí)現(xiàn)文字轉(zhuǎn)音頻的方法

    關(guān)于Python調(diào)用百度語音合成SDK實(shí)現(xiàn)文字轉(zhuǎn)音頻的方法

    這篇文章主要介紹了關(guān)于Python調(diào)用百度語音合成SDK實(shí)現(xiàn)文字轉(zhuǎn)音頻的方法,AipSpeech是語音合成的Python?SDK客戶端,為使用語音合成的開發(fā)人員提供了一系列的交互方法,需要的朋友可以參考下
    2023-07-07
  • Python大數(shù)據(jù)用Numpy Array的原因解讀

    Python大數(shù)據(jù)用Numpy Array的原因解讀

    一個(gè)Numpy數(shù)組由許多值組成,所有值的類型是相同的,Numpy 是Python科學(xué)計(jì)算的一個(gè)核心模塊,本文重點(diǎn)給大家介紹Python大數(shù)據(jù)Numpy Array的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-02-02

最新評(píng)論

蕉岭县| 应城市| 久治县| 循化| 汉沽区| 友谊县| 泰顺县| 驻马店市| 鄯善县| 富顺县| 谢通门县| 温泉县| 永年县| 湘西| 山阳县| 融水| 阳新县| 漠河县| 那坡县| 潍坊市| 韶山市| 轮台县| 西充县| 清流县| 南平市| 垦利县| 克东县| 剑阁县| 海宁市| 子长县| 萍乡市| 嘉峪关市| 潞西市| 绵竹市| 江西省| 汽车| 合江县| 白城市| 碌曲县| 分宜县| 聂拉木县|