[Paraview] mysterious linker error for custom library in custom PV Plugin

Christine Corbett Moran corbett at physik.uzh.ch
Fri Mar 4 06:22:17 EST 2011


Hi,

Thanks! Yes that fixed things. I was using another straight C library that
worked just fine so didn't realize this could be required.

Christine

On Fri, Mar 4, 2011 at 1:15 AM, Takuya OSHIMA <oshima at eng.niigata-u.ac.jp>wrote:

> I guess 'extern "C"' is missing in the declaration of fioOpen?
>
> Takuya
>
> Takuya OSHIMA, Ph.D.
> Faculty of Engineering, Niigata University
> 8050 Ikarashi-Ninocho, Nishi-ku, Niigata, 950-2181, JAPAN
>
> From: Christine Corbett Moran <corbett at physik.uzh.ch>
> Subject: [Paraview] mysterious linker error for custom library in custom PV
> Plugin
> Date: Thu, 3 Mar 2011 16:57:48 +0100
>
> > I have a problem with building/linking to an external library I've called
> > libfio. The library builds, and I can link programs against it from the
> > command line. However my final plugin always comes up with a "ld:
> symbol(s)
> > not found". I have several other libraries which are linked against just
> > fine in my plugin, it is only this one which creates a problem.
> >
> > I'm on OS X 10.6, using gcc version 4.2.1 (Apple Inc. build 5664). I have
> > tried building it both as a shared and static library, from both CMake
> and
> > externally (then linking from within CMake). I have several other
> libraries
> > I rely on which function perfectly well under any of the previous setups:
> > {shared,static} x {built within plugin cmake, built externally} x
> {c,cxx}.
> >  However with this set of .c files I always get a linking error, and it's
> > the same for any of the previous permutations. Under any configuration
> I'm
> > able to link against it from the command line. That is to say for the
> > example for a shared library built within the PV plugin CMake:
> libfio.dylib
> > is created within my build directory ParaViz_build, and doing e.g.  gcc
> > grafic2csv.c -lfio
> > -L/Users/corbett/Documents/Projects/pvaddons/ParaViz/ParaViz_build/  -o
> > grafic2csv has no linking errors, where grafic2csv contains the identical
> > code which later offends the linker within my plugin (see below for
> sample).
> >
> > Example make output for a shared library built within the PV Plugin
> CMake:
> > ...
> > [ 11%] Built target TipsyHelpers
> > [ 13%] Building C object CMakeFiles/fio.dir/fio/fio.c.o
> > [ 14%] Building C object CMakeFiles/fio.dir/fio/romberg.c.o
> > Linking C shared library libfio.dylib
> > [ 14%] Built target fio
> > [ 16%] Building C object CMakeFiles/SQLitelib.dir/sqlitelib/sqlite3.c.o
> > Linking C static library libSQLitelib.a
> > [ 16%] Built target SQLitelib
> > ..
> > [ 98%] Building CXX object
> > CMakeFiles/AstroVizPlugin.dir/AstroVizPlugin_Plugin.cxx.o
> > [100%] Building CXX object
> > CMakeFiles/AstroVizPlugin.dir/moc_AstroVizPlugin_Plugin.cxx.o
> > Linking CXX shared library libAstroVizPlugin.dylib
> > Undefined symbols:
> >   "fioOpen(char const*, double, double)", referenced from:
> >       vtkGraficReader::RequestData(vtkInformation*,
> vtkInformationVector**,
> > vtkInformationVector*)in vtkGraficReader.cxx.o
> > ld: symbol(s) not found
> > collect2: ld returned 1 exit status
> > make[2]: *** [libAstroVizPlugin.dylib] Error 1
> > make[1]: *** [CMakeFiles/AstroVizPlugin.dir/all] Error 2
> > make: *** [all] Error 2
> >
> >
> >
> > Example CMake for building a static library with the PV Plugin CMake:
> >
> > ADD_LIBRARY(
> > fio
> > STATIC
> > fio/fio.c
> > fio/romberg.c
> > )
> > SET_TARGET_PROPERTIES(fio PROPERTIES LINKER_LANGUAGE C)
> > SET_TARGET_PROPERTIES(fio PROPERTIES COMPILE_FLAGS "-fPIC")
> >
> > TARGET_LINK_LIBRARIES(
> > AstroVizPlugin
> > fio
> > TipsyHelpers
> > SQLitelib
> > )
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20110304/9793311f/attachment.htm>


More information about the ParaView mailing list