重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
最近在用C++做信號處理,因為涉及到矩陣數值計算且需要繪圖,便發現了C++可以調用python中的matplotlib進行畫圖,但是整個配置過程可謂是異常艱辛,特地過來總結一下!
文章略長,還請耐心看完。
主要參考:
C++matplotlibcpp配置、使用及發布(第三方無需安裝python即可運行)_c++_djh_-DevPress官方社區 (csdn.net)
進入正題 1. matplotlibcpp安裝下載地址:https://github.com/lava/matplotlib-cpp
下載的是一個文件夾,下載完先放在一邊備用,接下來重點說一下其他配置。
2. 環境配置 2.1 python環境配置因為是調用python中的matplotlib,所以首先需要配置python環境。我是從anaconda中下載的,因為在發布時需要打包matplotlib-cpp所有第三方依賴庫,anaconda可以直接下載好。
anaconda中具體操作可以自行查找,此處不再贅述。
2.2 VS中配置1)首先右鍵項目進入屬性頁,配置選擇Release,平臺x64(一般都是)。
2)選擇C/C++,編輯附加包含目錄。將以下兩個路徑添加進去:
C:\Users\ly123\.conda\envs\test12_12\Lib\site-packages\numpy\core\include
C:\Users\ly123\.conda\envs\test12_12\include
注:test12_12表示的是在anaconda創建的環境名稱(每個人不一樣),找不到路徑的可以去anaconda查看。
3)然后再選擇鏈接器,編輯附加庫目錄,添加C:\Users\ly123\.conda\envs\test12_12\libs。
4)再選擇鏈接器中的輸入,編輯附加依賴項。將C:\Users\ly123\.conda\envs\test12_12\libs中的三個文件名添加進去。
5)關鍵一步來了,需要將如下三個dll文件復制到VS項目的exe目錄下:
python3.dll、python38.dll、vcruntime140.dll(存放路徑:C:\Users\ly123\.conda\envs\test12_12)
并且將文件夾platforms也復制到exe目錄下(存放路徑:C:\Users\ly123\.conda\envs\test12_12\Library\plugins\platforms)
6)VS中配置完后,還要將目錄C:\Users\ly123\.conda\envs\test12_12\Library\bin添加到環境變量:
以上配置完成后,再將下載的matplotlibcpp文件夾中的matplotlibcpp.h頭文件拷貝到VS項目工程。
接下來為了使運行時不報錯,還需要做如下處理:注釋掉matplotlibcpp.h頭文件中的第354和356行。
最后在C++源文件中添加兩行代碼:
#include "matplotlibcpp.h"
namespace plt = matplotlibcpp;
至此,全部配置完成。
然而,就在我以為終于大功告成結束痛苦時,現實又給了我一記響亮的耳光,下面記錄一下遇到的問題以及解決方案。 1)提示matplotlibcpp.h中無法找到Python.h文件:首先找到python.h文件,將其路徑添加到項目屬性頁VC++目錄中的包含目錄即可。
好不容易程序能運行了,又報了這樣的錯誤。主要是因為找不到對應的環境變量,解決辦法如下:
在anaconda安裝目錄下,找到D:\anaconda\pkgs\qt-5.9.7-vc14h73c81de_0\Library\plugins
然后設置環境變量:
變量名為:QT_QPA_PLATFORM_PLUGIN_PATH;
路徑為:D:\anaconda\pkgs\qt-5.9.7-vc14h73c81de_0\Library\plugins。
解決了這兩個問題后,終于暫時脫離痛苦了,測試一下代碼:
plt::plot({1,2,3,4,5});
plt::show();
整個配置過程很麻煩,而且即便按照步驟配置可能也會遇到一些問題,所以還請多點耐心(bushi)!
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧