VS2017C++NetCDF配置

1.下载对应的NetCDF-C和C++库:
官网: https://downloads.unidata.ucar.edu/netcdf/
NetCDF4安装版(没有DAP的)看情况选择32或64位

下载cxx压缩包

2.项目属性配置
(1)安装exe及解压压缩文件,得到两个文件夹
(2)把netcdf-cxx4-4.3.1–>cxx4文件中的netcdf改名为netcdfcpp.h
(3)VS配置管理器设置为Release和x64
(4)项目–>属性–>VC++目录–>包含目录 添加netcdf-cxx4-4.3.1中的cxx4文件夹和netCDF 4.7.3中的include文件夹
(5)项目–>属性–>VC++目录–>库目录 添加netCDF 4.7.3中的lib文件夹
(6)项目–>属性–>链接器–>常规–>附加库目录 添加netCDF 4.7.3中的bin文件夹
(7)项目–>属性–>链接器–>输入–>附加依赖项 输入netcdf.lib
(8)项目–>属性–>C/C+±->预编译头–>不使用预编译头
3.把cxx4文件中的xxx.h xxx.cpp复制到项目头文件和源文件中(test_xxx是测试都不要)

4.添加以下:

1.首先创建***.nc文件:
#include <iostream>
#include "netcdfcpp.h"
#include <vector>
using namespace std;
using namespace netCDF;
using namespace netCDF::exceptions;
 
static const int NX = 6;
static const int NY = 12;
 
static const int NC_ERR = 2;
 
int main()
{
  int dataOut[NX][NY];
 
  for(int i = 0; i < NX; i++)
    for(int j = 0; j < NY; j++)
      dataOut[i][j] = i * NY + j;
 
  try
    {  
      NcFile dataFile("simple_xy.nc", NcFile::replace);
 
      NcDim xDim = dataFile.addDim("x", NX);
      NcDim yDim = dataFile.addDim("y", NY);
 
      vector<NcDim> dims;
      dims.push_back(xDim);
      dims.push_back(yDim);
      NcVar data = dataFile.addVar("data", ncInt, dims);
 
      data.putVar(dataOut);
 
      return 0; 
    }
  catch(NcException& e)
    {e.what();
      return NC_ERR;
    }
}

2.读取刚创建的***.nc文件:


#include
#include "netcdfcpp.h"
using namespace std;
using namespace netCDF;
using namespace netCDF::exceptions;

static const int NX = 6;
static const int NY = 12;

static const int NC_ERR = 2;

int main()
{
  try
  {
  int dataIn[NX][NY]; 

  NcFile dataFile("simple_xy.nc", NcFile::read);

  NcVar data=dataFile.getVar("data");
  if(data.isNull()) return NC_ERR;
  data.getVar(dataIn);

  for (int i = 0; i < NX; i++)
     for (int j = 0; j < NY; j++)
if (dataIn[i][j] != i * NY + j)
 return NC_ERR;

  return 0;
  }catch(NcException& e)
    {
      e.what();
      cout<<"FAILURE*************************************"<<endl;
      return NC_ERR;
    }
}

5.运行成功即配置成功

可能遇到的问题:
1.NcFile dataFile(“nc文件的路径”, NcFile::read);文件路径中的反斜杠都要换成正斜杠,"\"也不行的
2.同样的配置方法在低版本VS中可能不能成功(2015可以一试)
3.缺少xxx.dll:在文件夹里找到对应文件复制到C:\Windows\system32下,查看是否安装hdf5,删除hdf5的path路径重启电脑
4.error C4996: ‘strcpy’: This function or variable may be unsafe. Consider using strcpy_s instead.:项目–>属性–>C/C++>预处理器–>预处理器定义 添加_CRT_SECURE_NO_WARNINGS

posted @ 2022-04-15 19:03  xiaomaixiaomai  阅读(591)  评论(1编辑  收藏  举报