在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库配置成功。

  至此,大功告成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python-VBA函数之旅-id函数

目录 一、id函数的常见应用场景&#xff1a; 二、id函数使用注意事项&#xff1a; 1、id函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;神奇夜光杯-CSDN博客 一、id函数的常见应用场景&#xff1a; id函…

【Linux开发实用篇】备份与恢复

备份 实体机无法做快照&#xff0c;我们可以使用备份和恢复技术 第一种方式 把需要的文件&#xff08;或者分区&#xff09;用TAR打包就好&#xff0c;下次恢复的时候进行解压 第二种方式 使用dump 和 restore 指令&#xff1a; 首先安装这两个指令 yum -y install dump, …

2024平替电容笔买哪个品牌好?iPad电容笔全能榜单热门款TOP5分享!

2024年&#xff0c;随着科技的不断发展和消费者对生活品质的追求&#xff0c;电容笔作为一种创新的无纸化工具&#xff0c;逐渐走进人们的生活和工作中。然而&#xff0c;在电容笔市场的繁荣背后&#xff0c;也隐藏着品质良莠不齐的现象。众多品牌为了追求利润&#xff0c;推出…

Ubuntu 安装 Harbor

一、安装 docker 原文参考传送门 1st 卸载系统自带的 docker 应用 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 2nd 设置Docker 的apt源 # Add Dockers official GPG key: sudo…

2024/4/23 C++day1

有以下定义&#xff0c;说明哪些量可以改变哪些不可以改变&#xff1f; const char *p; 指针可以改变 值不可以改变 const (char *) p; 语法错误 char *const p; 指针不可以改变 值可以改变 const char* const p; 指针和值…

做抖音小店正确起店的方式,新店铺想快速爆单,步骤就这几个

大家好&#xff0c;我是电商笨笨熊 开通了抖音小店&#xff0c;但是店铺一直没有流量&#xff1b; 很多新手玩家进入抖店后都会遇到这样那样的问题&#xff0c;烦恼的事情一大堆&#xff1b; 没关系&#xff0c;今天我们就来聊聊新店铺该怎么快速起店&#xff0c;新手如何做…

使用CSS3 + Vue3 + js-tool-big-box工具,实现炫酷五一倒计时动效

时间过得真是飞速&#xff0c;很快又要到一年一度的五一劳动节啦&#xff0c;今年五天假&#xff0c;做好准备了吗&#xff1f;今天我们用CSS3 Vue3 一个前端工具库 js-tool-big-box来实现一个炫酷的五一倒计时动效吧。 目录 1 先制作一个CSS3样式 2 Vue3功能提前准备 3…

莫名锁表? --- mysql的事务隔离级别

前言 系统响应超时 系统访问数据库特别慢 莫名提示锁等待超时 数据库锁表 事务长时间等锁&#xff0c;直到超时 以上问题都可能是事务锁表导致的 问题 今天测试反馈系统批量处理莫名提示锁等待超时&#xff0c;再次操作查看数据库事务确实存在等锁情况&#xff0c;甚至死锁。…

模版初阶【C++】

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

NLP自然语言处理_序章

开一个新篇章&#xff0c;立一个flag&#xff0c;用一段时间来学习一下NLP&#xff0c;涨涨见识。 准备以B站 机器学习算法到transformer神经网络模型应用视频作为入门&#xff0c;此分类专门用于记录学习过程中的知识点以备自用。 一、何为NLP自然语言处理&#xff1f; NLP…

云原生的基石:containerd引领未来容器发展趋势

文章目录 一、Containerd简介&#xff1a;容器技术的心脏二、Containerd核心原理解析三、Containerd与Docker的关系四、Containerd在云原生应用部署中的作用五、Containerd的扩展性和插件机制六、Containerd的安全特性七、Containerd的性能优化八、Containerd的社区和生态系统九…

文本向量化模型新突破——acge_text_embedding勇夺C-MTEB榜首

在人工智能的浪潮中&#xff0c;以GPT4、Claude3、Llama 3等大型语言模型&#xff08;LLM&#xff09;无疑是最引人注目的潮头。这些模型通过在海量数据上的预训练&#xff0c;学习到了丰富的语言知识和模式&#xff0c;展现了出惊人的能力。在支撑这些大型语言模型应用落地方面…

RTSP/Onvif视频监控平台EasyNVR如何提高匿名用户的用户名和密码安全性?

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力&#xff0c;能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、W…

tcp inflight 守恒算法背后的哲学

tcp inflight 守恒拥塞控制的正确性 很久以前我开始纠结 tcp 锯齿&#xff0c;很多年后我知道这叫 capacity-seeking&#xff0c;甚至说 tcp 属于 capacity-seeking protocol 的原因就是它早已深入人心的 aimd 行为&#xff0c;而该行为生成了 tcp 锯齿。 在消除锯齿&#xf…

Python-VBA函数之旅-input函数

目录 一、input函数的常见应用场景&#xff1a; 二、input函数使用注意事项&#xff1a; 三、如何用好input函数&#xff1f; 1、input函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;神奇夜光杯-CSDN博…

hcia datacom课程学习(7):直连路由、静态路由

直连路由路由器接口上的网络&#xff08;接口配置了IP地址并且开启&#xff09;静态路由管理员手工添加的网络动态路由路由器之间动态学习形成的网络 1.直连路由 每当给路由器的一个接口配置了ip&#xff0c;路由表中就会产生对应的直连路由 配置路由接口ip的命令&#xff1…

web测试基础知识

目录 web系统的基础 web概念(worldwideweb) 网络结构 发展 架构 B/S C/S P2P 工作原理 静态页面 动态页面 web客户端技术 浏览器的核心--渲染引擎 web服务器端技术 web服务器 应用服务器 集群环境 数据库 案例-URL 协议类型 主机名 端口 IP地址 分类 …

【国产替代】航空电子通信总线航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持

航空电子通信总线 航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持。这些产品用于进行航空电子应用所需的开发、生产和系统测试。 PXIe&#xff0c;2通道PXI ARINC-664接口模块 AIM ARINC-664具有板载处理器&#xff0c;可自动处理所有与协议相关的活动&…

Java进阶-日志框架

概述 小结 体系 Logback概述 Logback快速入门 1.下载 一般情况&#xff0c;Logback日志框架只需要下载slf4j-api、logback-core、logback-classic这三个jar包即可。 slf4j-api-1.7.26.jar官网下载链接&#xff1a; https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7…

docker部署通义千问-7B-Chat的openai-api环境

服务器环境&#xff1a; 显卡驱动&#xff1a;Driver Version: 530.30.02 CUDA版本&#xff1a;CUDA Version: 12.1 显卡&#xff1a;NVIDIA GeForce RTX 3090共4张 注意&#xff1a;最好把显卡驱动升级到530&#xff0c;CUDA版本之前使用11.7有问题。 一、下载模型文件 …