在Visual Studio配置C++的netCDF库的方法

本文介绍在Windows电脑的Visual Studio软件中,配置C++ 语言最新版netCDF库的方法。

netCDF(Network Common Data Form)是一种用于存储、访问和共享科学数据的文件格式和库,其提供了一种灵活的方式来组织、描述和存储多维数据,适用于各种科学领域,包括气象学、地球科学、大气科学、海洋学等。而netCDF库则提供了用于读取和写入 netCDF数据的接口和函数——其支持多种编程语言,包括C、C++、Fortran、Python等。在我们之前的文章Anaconda下Python中h5py与netCDF4模块下载与安装方法(https://blog.csdn.net/zhebushibiaoshifu/article/details/120553597),以及文章Python批量读取大量nc格式文件并导出全部时间信息(https://blog.csdn.net/zhebushibiaoshifu/article/details/135331417),还有文章Python读取.nc数据并提取指定时间、经纬度维度对应的变量数值(https://blog.csdn.net/zhebushibiaoshifu/article/details/136264348)中,介绍过在Python环境下配置netCDF库、读取netCDF数据(也就是.nc格式的数据)的方法;而在本文中,我们就介绍一下这个netCDF库在C++ 语言环境下的编译、配置方法。

首先,我们进入netCDF库的官方下载网站(https://downloads.unidata.ucar.edu/netcdf/)。如下图所示,首先我们先下载NetCDF-C这个库——找到其中netCDF-4库(不带有DAP字样的那个),选择32-bit还是64-bit(一般就是64-bit),然后点击即可下载。

接下来,我们再下载netCDF-C++ 这个库。如下图所示,找到最新版的、后缀名为.zip的那个文件即可。

上述文件下载后,会分别得到1.exe可执行文件(前述NetCDF-C库),以及1.zip压缩包(前述netCDF-C++ 库);首先,将前述netCDF-C++ 库的压缩包解压缩,如下图所示。

其次,将前述netCDF-C++ 库的可执行文件打开,如下所示。

打开后,即可开始安装;安装过程中,主要注意以下几个界面的设置即可——首先,如下图所示,选择第二项,即为所有用户添加系统变量

接下来,选择要安装的文件夹路径;如下图所示。这里建议和前面解压缩文件得到的文件夹放在同一个路径下。

随后,即可完成安装。完成后,我们打开前述netCDF-C++ 库的解压缩文件夹,找到其中的cxx4文件夹,并找到netcdf文件,如下图所示。

将上述这个netcdf文件重命名,修改为netcdfcpp.h,如下图所示。

接下来,进入需要调用netCDF库的C++ 项目,在其名称上右键,并选择“属性”,如下图所示。

随后,在属性页中的“VC++ 目录”一栏中,分别配置“包含目录”和“库目录”。

其中,“包含目录”的配置如下图所示,即分别添加了解压缩文件夹中的cxx4文件夹,以及可执行文件安装路径中的include文件夹。

而“库目录”的配置如下图所示,即添加了可执行文件安装路径中的lib文件夹。

接下来,打开“链接器”→“常规”一栏中的“附加库目录”,如下图所示。

在其中,将可执行文件安装路径中的bin文件夹放入,如下图所示。

随后,打开“链接器”→“输入”一栏中的“附加依赖项”,如下图所示。

在其中,将可执行文件安装路径lib文件夹下的netcdf.lib文件放入,如下图所示。

接下来,大家可以试着先运行一下项目;如果项目里有关netCDF库的代码可以成功运行(如果大家此时还没有写完用到netCDF库的代码,那么可以用本文末尾给出的简单的测试代码),那么就大功告成了。

但是,如果出现了含有“无法解析的外部符号”字样的错误提示(我这里当时忘记截图了),那么就需要继续看本文。

首先,我们在项目的“头文件”上方右键,选择“添加”→“现有项”,如下图所示。

随后,打开解压缩文件夹中的cxx4文件夹,将其中所有不是test_开头的、且是.h结尾的头文件选中(可以在右侧的搜索栏中搜索.h字样,然后批量选择),添加到项目的头文件中;如下图所示。

添加之后,项目的头文件就是如下图所示的样子;其中,除了第一个文件,其他紫色框内所有文件,都是我们刚刚添加进去的。

接下来,对项目的源文件执行类似的操作——将解压缩文件夹中的cxx4文件夹内,所有不是test_开头的、且是.cpp结尾的代码文件放入,得到的结果如下图所示。

接下来,执行大家的代码。如果不报错、可以执行,那么大功告成;如果出现如下图所示的情况,提示This function or variable may be unsafe类似的报错,那么可以看到,这个报错给出了一个字段——在我这里就是_CRT_SECURE_NO_WARNINGS这个字段。

 首先,复制上面这个字段,随后打开项目的属性,选择“C/C++”一栏中的“预处理器”,然后将这个字段复制到“预处理器定义”中即可。

接下来,执行大家的代码。如果不报错、可以执行,那么大功告成;如果运行代码后,弹出来一个小的提示窗口,说找不到某个.dll文件,那么大家到可执行文件安装路径中的bin文件夹,将这个里面所有.dll结尾的文件复制,然后粘贴到Visual Studio项目文件夹下即可。

其中,粘贴完毕上述所有dll文件后,如下图所示。其中,这个Rec_CPP文件夹就是我这里的项目文件夹。

这个时候,再运行代码,就没问题了。

  最后,给出一个测试C++ 调用netCDF库的代码;其中,path就是大家存放.nc数据的路径(文件夹之间的分隔符需要用正斜杠/来表示),需要自行定义一下。

#include <iostream>
#include "netcdfcpp.h"
using namespace netCDF;int main() {string path = "path/to/nc_file";NcFile file(path, NcFile::read);
}

  这个代码什么都没干,就是读取了一下.nc数据;所以只要代码不报错,就说明netCDF库配置成功。

  至此,大功告成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625651.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口测试——postman

一.下载与安装 https://www.getPostman.com/ 界面导航说明 二.get请求 第一个get请求 批量执行接口请求&#xff1a; 1. 右击run collection 2. 会出现runner标签页 携带参数的GET请求 所谓的查询参数&#xff0c;其实就是URL地址中问号&#xff08;?&#xff09;后面的部分…

Docker应用推荐个人服务器实用有趣的项目推荐

Wallabag&#xff1a;是一个开源的、自托管的文章阅读和保存工具。它允许你保存网页文章并进行离线阅读&#xff0c;去除广告和不必要的内容&#xff0c;以提供更好的阅读体验。Wallabag支持多种导入和导出格式&#xff0c;并提供了一些实用的功能&#xff0c;如标签、阅读列表…

定制k8s域名解析------CoreDns配置实验

定制k8s域名解析------CoreDns配置实验 1. 需求 k8s集群内通过CoreDns互相解析service名. 同时pana.cn域为外部dns解析,需要通过指定dns服务器进行解析 再有3个服务器,需要使用A记录进行解析 2. K8s外DNS服务器 查看解析文件 tail -3 /var/named/pana.cn.zone 解析内容 ww…

go限流、计数器固定窗口算法/计数器滑动窗口算法

go限流、计数器固定窗口算法/计数器滑动窗口算法 一、问题 问题1&#xff1a;后端接口只能支撑每10秒1w个请求&#xff0c;要怎么来保护它呢&#xff1f; 问题2&#xff1a;发短信的接口&#xff0c;不超过100次/时&#xff0c;1000次/24小时&#xff0c;要怎么实现&#xff…

websocket定时推送数据

示例代码 1、添加pom.xml依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-websocket</artifactId> </dependency> 2、创建websocket配置类 package com.success.socket; import org.springframework.conte…

社交创新的标杆:解读Facebook的社交模式

引言 在当今数字化时代&#xff0c;社交媒体已成为人们日常生活和沟通的重要工具。作为全球最大的社交媒体平台&#xff0c;Facebook不仅改变了我们的社交模式&#xff0c;而且对全球的社交文化、商业活动和公共事务产生了深远的影响。本文将深入探讨Facebook的社交模式&#…

C++算法题 - 矩阵

目录 36. 有效的数独54. 螺旋矩阵48. 旋转图像73. 矩阵置零289. 生命游戏 36. 有效的数独 LeetCode_link 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现…

yolo组件之BottleneckCSP总结

1. 功能解释 Bottleneck CSP&#xff08;Cross Stage Partial&#xff09;是一种常用于计算机视觉任务的卷积神经网络&#xff08;CNN&#xff09;中的瓶颈层类型。它是传统瓶颈层&#xff08;如ResNet中常见的Bottleneck&#xff0c;关于Bottleneck介绍请参考文章yolo组件之Bo…

优斯特:防静电包装解决方案的巧妙运用

在现代电子产品生产与运输领域&#xff0c;防静电包装已成为保障产品安全的必备环节。优斯特凭借其创新的防静电包装解决方案&#xff0c;为客户提供了一种巧妙的方式来确保产品在存储和运输过程中不受静电影响&#xff0c;并且不会被刮花或损坏。 静电对产品的影响 静电对电子…

JAVA_类和对象(1)

认识面向对象 Java是一门纯面向对象的语言(Object Oriented Program, OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。面向对象是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。  面向过程和面相对象并不是一门语言&#xff0c;而是解决…

【项目实战】记录一次PG数据库迁移至GaussDB测试(上)

目录 一、说明 1.1、参考文档 1.2、注意事项 1.3、环境基本情况 二、GaussDB新环境安装 2.1 配置操作环境变量 2.1.1 关闭防火墙 步骤1 执行以下命令&#xff0c;检查防火墙是否关闭。 步骤2 执行以下命令&#xff0c;关闭防火墙并禁止开机启动。 步骤3 修改/etc/sel…

Adobe AE(After Effects)2024下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件&#xff0c;由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能&#xff0c;可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…