" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何在C++中調(diào)用python代碼你知道嗎

 更新時間:2021年12月30日 15:00:01   作者:yangtuanzi1118  
這篇文章主要為大家介紹了C++中調(diào)用python代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

一、環(huán)境設(shè)置

windows

VS2015

python的話用的是acaconda自帶的python環(huán)境,不同版本的acaconda自帶的python不同,我的是python3.6(這一步很重要,如果使用acaconda創(chuàng)建的虛擬環(huán)境的python,可能會不成功)

二、VS項(xiàng)目中設(shè)置

(1)首先在acaconda中找到include文件夾和libs文件夾,如圖所示

然后右擊C++項(xiàng)目,選擇屬性,點(diǎn)擊VC++目錄,然后在包含目錄中添加include文件夾,在庫目錄中添加libs文件夾

(2)點(diǎn)擊鏈接器,然后輸入,附加依賴項(xiàng),添加python36_d.lib的路徑

因?yàn)榕渲脼镈ebug,所以是添加python36_d.lib,而不是python36.lib。如果沒有這個文件,直接復(fù)制python36.lib,然后命名為python36_d.lib即可。如圖所示

(3)python代碼

想要在C++代碼中調(diào)用python中的vsdemo.py的max函數(shù),首先python代碼如圖所示

def max(a,b):
    if a>b:
        return a
    else:
        return b

C++代碼如圖所示

#include <iostream>
#include<python.h>
#include"stdio.h"
using namespace std;
int main()
{
	Py_Initialize();//使用python之前,要調(diào)用Py_Initialize();這個函數(shù)進(jìn)行初始化
	if (!Py_IsInitialized())
	{
		printf("初始化失敗!");
		return 0;
	}
	PyRun_SimpleString("import sys");
	PyRun_SimpleString("sys.path.append('./')");//這一步很重要,修改Python路徑
	PyObject* pModule = NULL;//聲明變量
	PyObject* pFunc = NULL;// 聲明變量
	pModule = PyImport_ImportModule("vsdemo");//這里是要調(diào)用的文件名vsdemo.py
	if (pModule == NULL)
	{
		cout << "沒找到" << endl;
	}
	pFunc = PyObject_GetAttrString(pModule, "max");//這里是要調(diào)用的函數(shù)名max
	PyObject* pParams = Py_BuildValue("(ss)", "3", "4");//兩個字符串參數(shù)
	char* result;
	PyObject* pRet = PyObject_CallObject(pFunc, pParams);//調(diào)用函數(shù) pRet是得到的結(jié)果
	int res = 0;
	PyArg_Parse(pRet, "s", &result);//轉(zhuǎn)換結(jié)果的返回類型
	cout << "res:" << result << endl;//輸出結(jié)果
	system("pause");
	Py_Finalize();//調(diào)用Py_Finalize,這個根Py_Initialize相對應(yīng)的。
	return 0;
}

同時需要把python代碼,即vsdemo.py文件,放到c++項(xiàng)目文件中,然后再運(yùn)行

三、可能會出現(xiàn)的問題

(1)可能會出現(xiàn)找不到python36.dll的錯誤,可以從acaconda中找到該文件,復(fù)制到c++項(xiàng)目文件中即可,如圖所示

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++?Boost?CircularBuffer算法超詳細(xì)精講

    C++?Boost?CircularBuffer算法超詳細(xì)精講

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C++實(shí)踐IP地址類項(xiàng)目參考

    C++實(shí)踐IP地址類項(xiàng)目參考

    今天小編就為大家分享一篇關(guān)于C++實(shí)踐IP地址類項(xiàng)目參考,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • VC6.0代碼自動提示 VC6.0在win7環(huán)境下代碼提示智能化

    VC6.0代碼自動提示 VC6.0在win7環(huán)境下代碼提示智能化

    作為程序猿的你,是否已經(jīng)喜歡或習(xí)慣依賴IDE開發(fā)環(huán)境呢,有了IDE環(huán)境,即使你想不起方法全名,只要知道某個前綴,或哪怕在提示列表中,一一查詢,也可以找到自己想找的方法或?qū)傩?/div> 2013-01-01
  • C語言使用ffmpeg和sdl實(shí)現(xiàn)多路音頻播放

    C語言使用ffmpeg和sdl實(shí)現(xiàn)多路音頻播放

    這篇文章主要為大家詳細(xì)介紹了一種基于ffmpeg和sdl實(shí)現(xiàn)的音頻多路混合的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2023-06-06
  • MFC自繪Button按鈕分析和實(shí)現(xiàn)

    MFC自繪Button按鈕分析和實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了MFC自繪Button按鈕分析和實(shí)現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • c++類構(gòu)造函數(shù)詳解

    c++類構(gòu)造函數(shù)詳解

    這篇文章主要介紹了c++類構(gòu)造函數(shù)示例,需要的朋友可以參考下
    2014-05-05
  • 淺談C++繼承中的名字查找

    淺談C++繼承中的名字查找

    下面小編就為大家?guī)硪黄獪\談C++繼承中的名字查找。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C語言 遞歸解決青蛙跳臺階問題

    C語言 遞歸解決青蛙跳臺階問題

    遞歸做為一種算法在程序設(shè)計語言中廣泛應(yīng)用。基本含義&#8203;是指函數(shù)/過程/子程序在運(yùn)行過程序中直接或間接調(diào)用自身而產(chǎn)生的重入現(xiàn)象。在計算機(jī)編程里,遞歸指的是一個過程:函數(shù)不斷引用自身,直到引用的對象已知
    2021-11-11
  • 詳解C語言實(shí)現(xiàn)猜數(shù)字游戲

    詳解C語言實(shí)現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家介紹了C語言實(shí)現(xiàn)猜數(shù)字游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2022-01-01
  • 教你分辨C++堆與棧的區(qū)別

    教你分辨C++堆與棧的區(qū)別

    堆與棧的區(qū)別有:1、棧由系統(tǒng)自動分配,而堆是人為申請開辟;2、棧獲得的空間較小,而堆獲得的空間較大;3、棧由系統(tǒng)自動分配,速度較快,而堆一般速度比較慢;4、棧是連續(xù)的空間,而堆是不連續(xù)的空間
    2021-06-06

最新評論