Hi,
I am trying to compile NetCDF under Visual Studio 2008 Prof. (aka VS
9.0). Yes, I know: every new version of Visual Studio has new
surprises. I attach notes with details of the problems I encountered.
I tried the current 4.0 stable build as well as the daily snapshots of
NetCDF 3 and 4. As I am still unable to compile the library I will use
the last available binaries: for NetCDF 3.6.1. However, I have a
couple of suggestions, if that is ok:
- The win32 binaries were not easy to find. It would seem logical to
put the link on the page where other (non-Windows) people can download
their binaries.
- It would be nice if you made newer builds available. I use VS 2008,
but if you can compile NetCDF 4.0 with VS 2005, I could use the
resulting library.
- New versions of Visual C++ (incl. 2008) are available for free from
msdn.microsoft.com, as so-called "express editions". The express
version does not have all the features of prof. edition, but it should
be ok for testing the distribution.
- I wanted to compile from the command line, but I do not know how to.
There is no "makefile", and Microsoft's nmake would not accept
makefile.in as input. In any case, command-line compilation might
prove more resilient to Microsoft's ever-changing ideas on how to
improve their build system.
Thanks and best wishes,
Maciej.
Buidling NetCDF under VS 2008.
I tried: NetCDF 4.0 (stable) and development snapshots:
netcdf-3.6.3-snapshot2008080506, netcdf-4.0-snapshot2008073106.
Here is the detailed description of the problems and some workarounds.
1. VS converted the sln file to the new version. I removed the /Wp64 compiler
option (deprecated).
2. I got errors resulting from the definition
typedef long _off_t
in <sys/types.h>. This issue was previously dicussed on the list. I resolved it
by addin the lines:
#ifndef _OFF_T_DEFINED
typedef long _off_t; /* file offset value */
#define _OFF_T_DEFINED
#endif
before #include <sys/types.h> in nc.h.
3. Some include files where missing:
inttypes.h
unistd.h
I got inttypes.h and a compatible stdint.h from wikipedia. I created an empty
unistd.h.
I got this problem in the stable 4.0 release, and then, since I already had the
files in standard directories, it did not come up anymore.
4. I had to replace:
extern char *sys_errlist[];
with
extern char **sys_errlist;
in the definition of strerror(int errnum) in error.c.
5. I am still getting unresolved externals:
_utf8proc_NFC
_utf8proc_check
I do not know how to deal with them.