[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