NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Harvey, If you compile the HDF libraries (MFHDF to be more specific) defining "Has_NetCDF" (not sure about case) the names of all netcdf-2 functions get changed, with some token pre-appended to it. (I found out about this the hard way: my code also defined the macro "Has_NetCDF" and I could not link to mfhdf). I never tried to use this to link hdf/netcdf in the same program, but it appears that the hooks are there. Arlindo > > This is a report on the modifications I had to make so the netCDF library > had > no names the same as those in the HDF library. (Initially there were lots of > conflicts because > HDF includes all the netcdf-2 names.) I only wanted to use netcdf-3 names > so it > seemed reasonable to try to suppress the netcdf-2 names in the netcdf > library. (I > could have modified HDF rather than netCDF, but it turned out to be just a > couple of hours > work to do it this way.) > > I ran configure with > CPPFLAGS="-DNDEBUG -DNO_NETCDF_2" ./configure > > I had hoped that this would suppress the generation of the version 2 stuff > in v2i.c, but I had > to insert several #ifndef commands to make this happen. I found the only > code in v2i.c which > needed to be retained was that for function nctypelen (which was supposed to > disappear from > version 3 if I remember correctly :-( ) > > This left just ten conflicting names. So I changed these by inserting the > following into nc.h: > > /* > * Redefine following names to avoid conflict with HDF names > */ > > #define nctypelen nc_nctypelen > int nctypelen(nc_type type); > > #define NC_begins nc_NC_begins > #define NC_check_id nc_NC_check_id > #define NC_computeshapes nc_NC_computeshapes > #define NC_endef nc_NC_endef > #define NC_findattr nc_NC_findattr > #define NC_lookupattr nc_NC_lookupattr > #define NC_lookupvar nc_NC_lookupvar > #define NC_var_shape nc_NC_var_shape > #define NC_varoffset nc_NC_varoffset > > Finally, I found it useful to define a NULL data-type like the HDF type > DFNT_NONE. > So I added the following line defining dummy type NC_NAT to netcdf.h as > follows: > > /* > * The netcdf external data types > */ > typedef enum { > NC_NAT = 0, /* NAT = 'Not A Type' (c.f. NaN) */ > NC_BYTE = 1, /* signed 1 byte integer */ > NC_CHAR = 2, /* ISO/ASCII character */ > NC_SHORT = 3, /* signed 2 byte integer */ > NC_INT = 4, /* signed 4 byte integer */ > NC_FLOAT = 5, /* single precision floating point number */ > NC_DOUBLE = 6 /* double precision floating point number */ > } nc_type; > > I will send a copy of my modified code to Unidata. > > Harvey Davies, CSIRO Atmospheric Research, > Private Bag No. 1, Aspendale 3195 > E-mail: harvey.davies@xxxxxxxxxxxx > Phone: +61 3 9239 4556 > Fax: +61 3 9239 4444 > > -- Arlindo da Silva dasilva@xxxxxxxxxxxxx
netcdfgroup
archives: