日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

如何在C++中调用python代码

發布時間:2023/12/20 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在C++中调用python代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、環境設置

windows

VS2015

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

二、VS項目中設置

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

?

然后右擊C++項目,選擇屬性,點擊VC++目錄,然后在包含目錄中添加include文件夾,在庫目錄中添加libs文件夾

(2)點擊鏈接器,然后輸入,附加依賴項,添加python36_d.lib的路徑?

?因為配置為Debug,所以是添加python36_d.lib,而不是python36.lib。如果沒有這個文件,直接復制python36.lib,然后命名為python36_d.lib即可。如圖所示

(3)python代碼

? ? ? 想要在C++代碼中調用python中的vsdemo.py的max函數,首先python代碼如圖所示

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

C++代碼如圖所示

#include <iostream> #include<python.h> #include"stdio.h" using namespace std; int main() {Py_Initialize();//使用python之前,要調用Py_Initialize();這個函數進行初始化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");//這里是要調用的文件名vsdemo.pyif (pModule == NULL){cout << "沒找到" << endl;}pFunc = PyObject_GetAttrString(pModule, "max");//這里是要調用的函數名maxPyObject* pParams = Py_BuildValue("(ss)", "3", "4");//兩個字符串參數char* result;PyObject* pRet = PyObject_CallObject(pFunc, pParams);//調用函數 pRet是得到的結果int res = 0;PyArg_Parse(pRet, "s", &result);//轉換結果的返回類型cout << "res:" << result << endl;//輸出結果system("pause");Py_Finalize();//調用Py_Finalize,這個根Py_Initialize相對應的。return 0;}

,同時需要把python代碼,即vsdemo.py文件,放到c++項目文件中,然后再運行

?三、可能會出現的問題

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

?

總結

以上是生活随笔為你收集整理的如何在C++中调用python代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。