This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Hi Bill, > //I'm having trouble linking my C++ test program with the //netCDF C++ > version 4.1.3 library. I do not have the option of using version 4.2. > The program compiles cleanly. Here's the source:/ > > #include <iostream> > #include <string> > > #include "/mgt/dev/apps/common/netcdf4/include/netcdfcpp.h" > > int main ( int argc , const char ** argv ) > > { > > std::cout << "\nPlease enter the name of the netCDF file " > << "that you want me to *try* to read." > << std::endl; > std::cout << ':'; > > std::string filename; > std::cin >> filename; > > std::cout << "\nThe filename you entered is:\n\"" > << filename > << "\".\n" > << std::endl; > > NcFile testfile ( filename.c_str () ); > > if (testfile.is_valid () == 0) > { > std::cout << "Version 4.1.3 of the netCDF C++ library " > << "cannot handle this file.\n" > << std::endl; > return 0; > } > > return 0; > > } > > /Here's what I get when I t//ry to build:/ > > [Pprecip@MGTdev netcdf413]$ g++ -o main main.C > -L/mgt/dev/apps/common/netcdf4/lib/ -lnetcdf_c++4 The problem is using the wrong library. Your program calls the netCDF C++ "legacy" library API, but you are trying to link with a non-compatible newer version of the netCDF-4 C++ library. If you built successfully from netcdf-4.1.3, you should have installed libnetcdf_c++ files in the lib/ directory your linking with, in which case you can just use "-lnetcdf_c++" instead of "-lnetcdf_c++4" for linking your program. In case you want to use it, the newer netcdf-4 C++ library is available and explained in the Readme documentation appearing at the bottom of this web page: https://github.com/Unidata/netcdf-cxx4 but it's not upward compatible with the legacy API. --Russ > /tmp/ccwzCfrW.o: In function `main': > main.C:(.text+0x127): undefined reference to `NcFile::NcFile(char > const*, NcFile::FileMode, unsigned long*, unsigned long, > NcFile::FileFormat)' > main.C:(.text+0x130): undefined reference to `NcFile::is_valid() const' > main.C:(.text+0x185): undefined reference to `NcFile::~NcFile()' > main.C:(.text+0x194): undefined reference to `NcFile::~NcFile()' > collect2: ld returned 1 exit status > [Pprecip@MGTdev netcdf413]$ > > /What am I doing wrong? ....or what am I not doing that I should be > doing? I and two co-workers are s//tumped.// > // > //Thank-you in advance for your help.// > //Bill./ > > -- > William (Bill) Mattison > NCWCP, cubicle 3693. > 301-683-3272. > > > Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu Ticket Details =================== Ticket ID: UHO-898473 Department: Support netCDF Priority: Normal Status: Closed