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

2024-03-05 08:12

本文主要是介绍在Visual Studio配置C++的netCDF库的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

  netCDF(Network Common Data Form)是一种用于存储、访问和共享科学数据的文件格式和库,其提供了一种灵活的方式来组织、描述和存储多维数据,适用于各种科学领域,包括气象学、地球科学、大气科学、海洋学等。而netCDF库则提供了用于读取和写入 netCDF数据的接口和函数——其支持多种编程语言,包括CC++FortranPython等。在我们之前的文章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++ 项目,在其名称上右键,并选择“属性”,如下图所示。

image-20240304131312932

  随后,在属性页中的“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库配置成功。

  至此,大功告成。

欢迎关注:疯狂学习GIS

这篇关于在Visual Studio配置C++的netCDF库的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775855

相关文章

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方