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