[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[netCDF #UHO-898473]: question: linking with netCDF C++ 4.1.3.
- Subject: [netCDF #UHO-898473]: question: linking with netCDF C++ 4.1.3.
- Date: Mon, 02 Jun 2014 13:01:53 -0600
> Thank-you Russ. Your suggestion to use libnetcdf_c++ works.
>
> I wish that I could use the newer netCDF C++ library (version 4.2?).
> But my government manager and another programmer here are seriously
> afraid that doing that will break that other programmer's code. So I'm
> stuck with the older version. I had enough trouble getting the manager
> to allow me to use C++!
You can actually install both the old and new C++ libraries in the same
directory without any name conflicts. But using a different API than
your coworkers might interfere with collaborations :-).
> By the way, what are the ".la" files in the "lib" directory?
The .la file is used by libtool. Here's a better explanation
than I could provide:
http://stackoverflow.com/questions/1238035/what-is-libtools-la-file-for
--Russ
> On 6/2/2014 12:28 PM, Unidata netCDF Support wrote:
> > 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
> >
>
> --
> 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