[Insight-users] problem linking QT with ITK

Luis Ibanez luis.ibanez at kitware.com
Tue Jul 13 19:16:48 EDT 2004


Hi Yannick


Please try the following,

Take the symbols that are being reported as duplicate
symbols at link time, and add them to the file


        Insight/Utilities/png/
                  itk_png_mangle.h


Then

      1) recompile ITK.
      2) recompile your application.


The symbols in the itk_png_mangle.h file are mangled to
prevent them from colliding with external PNG libraries.


Please let us know if that works ok for you.


   Thanks


     Luis



--------------------
Yannick Allard wrote:

> Hi Luis,
> 
> I'm using the Insight Toolkit 1.6.0. Here is the error message I get (a part of 
> it... sorry for the formatting...) :
> ------------------------------------------------------------------
> g++   main_i386.solaris2.8_g++_debug.o 
> A_Principal_i386.solaris2.8_g++_debug.o ../../lib/i386.solaris2.8/libGUI_i386.so
> laris2.8_g++_debug.a ../../li
> b/i386.solaris2.8/libMSDF_INT_i386.solaris2.8_g++_debug.a ../../lib/i386.solaris
> 2.8/libHSI_Util_i386.solaris2.8_g++_debug.a ../../lib/i386.solaris2.
> 8/libIkonos_Util_i386.solaris2.8_g++_debug.a ../../lib/i386.solaris2.8/libPolSAR
> _Util_i386.solaris2.8_g++_debug.a ../../lib/i386.solaris2.8/libSteve
> _Util_i386.solaris2.8_g++_debug.a ../../lib/i386.solaris2.8/libUtil_i386.solaris
> 2.8_g++_debug.a /home/kbs/kbs-2.5/lib/i386.solaris2.8/libCortex_i386
> .solaris2.8_g++_opt.a /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a /home/yallard/glut-3.6/lib/glut/libglut.a -lGL -
> lGLU /home/rnd/pkg/hdf5-1.4.3/i386.solaris2.8/lib/libhdf5.a -
> lz /home/rnd/pkg/mpich-
> 1.2.3/i386.solaris2.8/lib/libmpich.a /usr/lib/libaio.so /home/ya
> llard/GSL/gsl-0.9.3/.libs/libgsl.a /home/yallard/GSL/gsl-
> 0.9.3/cblas/.libs/libgslcblas.a -lpthread -lthread -lposix4 -lXext -lsocket -
> lnsl -lfl -lX1
> 1 -lICE -lSM /appl/pkg/public/netpbm-9.19/i386.solaris2.8/lib/libpbm.a -lppm -
> lpgm -lpbm -lm /home/rnd/RND_REPOSITORY/C_Recipes/lib/i386.solaris2.8/
> libC_Recipes_i386.solaris2.8_g++_debug.a /home/rnd/RND_REPOSITORY/MESCH/lib/i386
> .solaris2.8/libmesch_i386.solaris2.8_g++_debug.a /home/rnd/pkg/tvcpp
> 0p8/i386.solaris2.8/lib/libvsip.a /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libitkvnl.a /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris
> 2.8/lib/libITKIO.a /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libITKCommon.a /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libi
> tkvcl.a /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libitktiff.a /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libitkjpeg.a /hom
> e/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libITKDICOMParser.a /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libITKMetaIO.a /home/r
> nd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libitkpng.a /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.solaris2.8/lib/libitkzlib.a  -o ImagingIDFSRegis
> _i386.solaris2.8_g++_debug
> ld: fatal: symbol `png_libpng_ver' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_sig' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_IHDR' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_IDAT' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_IEND' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_PLTE' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_bKGD' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_cHRM' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_gAMA' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_hIST' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_iCCP' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_iTXt' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_oFFs' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_pCAL' is multiply-defined:
>         (file /home/rnd/pkg/qt-2.3.0/i386.solaris2.8/lib/libqt-
> mt_i386.solaris2.8_g++_opt.a(png.o) and file /home/rnd/pkg/InsightToolkit-
> 1.6.0/i386.
> solaris2.8/lib/libitkpng.a(png.o));
> ld: fatal: symbol `png_sCAL' is multiply-defined:
> 
> -------------------------------------------------------
> 
> Yannick
> 
> Selon Luis Ibanez <luis.ibanez at kitware.com>:
> 
> 
>>Hi Yannick,
>>
>>
>>What version of ITK are you using ?
>>
>>The current CVS version has name mangling for the
>>PNG library distributed with ITK in the Utilities
>>directory. That should prevent name conflicts at
>>link time.
>>
>>It will be nice if you post some of the error
>>messages that you get   :-)
>>
>>
>>Please let us know,
>>
>>
>>    Thanks
>>
>>
>>      Luis
>>
>>
>>---------------------
>>Yannick Allard wrote:
>>
>>
>>>Hi Everyone,
>>>
>>>I'm trying to build an application that use QT to build the GUI and add
>>
>>some 
>>
>>>ITK functions for image processing. The compilation is going just fine but
>>
>>at 
>>
>>>the link time I've some conflicts between QT and ITK where some functions
>>
>>are 
>>
>>>multiply defined (like the ones for png image support).
>>>
>>>I'm NOT using CMake to compile. I'm using gcc 3.2 under solaris 2.8 on a
>>
>>intel 
>>
>>>platform. Any idea on how to solve the linking problem....
>>>
>>>Thank you very much
>>>
>>>Yannick
>>>_______________________________________________
>>>Insight-users mailing list
>>>Insight-users at itk.org
>>>http://www.itk.org/mailman/listinfo/insight-users
>>>
>>
>>
>>
>>
>>
> 
> 
> 





More information about the Insight-users mailing list