C++调用matplotlib绘图总结-创新互联

前言

最近在用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添加到环境变量:

2.3 matplotlibcpp使用

以上配置完成后,再将下载的matplotlibcpp文件夹中的matplotlibcpp.h头文件拷贝到VS项目工程。

接下来为了使运行时不报错,还需要做如下处理:注释掉matplotlibcpp.h头文件中的第354和356行。

最后在C++源文件中添加两行代码:

#include "matplotlibcpp.h"
namespace plt = matplotlibcpp;

至此,全部配置完成。

然而,就在我以为终于大功告成结束痛苦时,现实又给了我一记响亮的耳光,下面记录一下遇到的问题以及解决方案。 1)提示matplotlibcpp.h中无法找到Python.h文件:

首先找到python.h文件,将其路径添加到项目属性页VC++目录中的包含目录即可。

2)Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding

好不容易程序能运行了,又报了这样的错误。主要是因为找不到对应的环境变量,解决办法如下:

在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();

OVER!!!

整个配置过程很麻烦,而且即便按照步骤配置可能也会遇到一些问题,所以还请多点耐心(bushi)!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

当前题目:C++调用matplotlib绘图总结-创新互联
URL网址:https://www.cdcxhl.com/article18/djeegp.html

成都网站建设公司_创新互联,为您提供静态网站云服务器网站设计公司商城网站网站建设服务器托管

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设