[Insight-users] Linking to shared MinGW build of ITK not possible

Zelzer Sascha s.zelzer at dkfz-heidelberg.de
Wed Oct 14 17:50:12 EDT 2009


Hi,

Itk 3.16 indeed solves the linker errors, thanks for pointing me to it!

Cheers,
Sascha

> -----Ursprüngliche Nachricht-----
> Von: Bill Lorensen [mailto:bill.lorensen at gmail.com]
> Gesendet: Mittwoch, 14. Oktober 2009 19:04
> An: Zelzer Sascha
> Cc: insight-users at itk.org
> Betreff: Re: [Insight-users] Linking to shared MinGW build of ITK not
> possible
> 
> itk 3.16 has several changes to correct the shared library problems on
> mingw and cygwin.
> 
> You might update to 3.16 and see if it solves your problem.
> 
> Bill
> 
> On Tue, Oct 13, 2009 at 12:50 PM, Zelzer Sascha
> <s.zelzer at dkfz-heidelberg.de> wrote:
> > Hi,
> >
> >
> >
> > I built ITK 3.14 successfully with MinGW (gcc 4.4) with
> > BUILD_SHARED_LIBS=ON. However, when I try to build my project which
> depends
> > on ITK, the linker complains about multiple definitions of symbols in
> > ITKCommon.dll.a and libitkvnl.a (for example).
> >
> >
> >
> > It seems that the transitive library dependencies, which CMake
> generates for
> > my shared library, are incorrect since ITKCommon already links
> statically to
> > itkvnl but libitkvnl.a ist still present in the list of libraries to
> be
> > linked.
> >
> >
> >
> > If I change the following lines in ITKs CMakeLists.txt from
> >
> >
> >
> > 407: IF(WIN32)
> >
> > 408:   IF(BUILD_SHARED_LIBS)
> >
> > 409:     SET(ITK_COMMON_BUILD_TYPE "SHARED")
> >
> > 410:   ELSE(BUILD_SHARED_LIBS)
> >
> > 411:     SET(ITK_COMMON_BUILD_TYPE "STATIC")
> >
> > 412:   ENDIF(BUILD_SHARED_LIBS)
> >
> > 413:   SET(BUILD_SHARED_LIBS OFF)
> >
> > 414: ENDIF(WIN32)
> >
> >
> >
> > to
> >
> >
> >
> > 407: IF(WIN32 AND NOT MINGW)
> >
> > 408:   IF(BUILD_SHARED_LIBS)
> >
> > 409:     SET(ITK_COMMON_BUILD_TYPE "SHARED")
> >
> > 410:   ELSE(BUILD_SHARED_LIBS)
> >
> > 411:     SET(ITK_COMMON_BUILD_TYPE "STATIC")
> >
> > 412:   ENDIF(BUILD_SHARED_LIBS)
> >
> > 413:   SET(BUILD_SHARED_LIBS OFF)
> >
> > 414: ENDIF(WIN32 AND NOT MINGW)
> >
> >
> >
> > and correct the export/import defines in
> Utilities/gdcm/src/gdcmCommon.h:81
> >
> >
> >
> > from #ifdef gdcm_EXPORTS to #ifdef itkgdcm_EXPORTS
> >
> >
> >
> > the utility libraries are build as shared libraries and everything
> links
> > fine to my project.
> >
> >
> >
> > Is this a known bug, a CMake problem, or a misconfiguration on my
> side?
> >
> >
> >
> > Thanks,
> >
> > Sascha
> >
> > _____________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the ITK FAQ at:
> > http://www.itk.org/Wiki/ITK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.itk.org/mailman/listinfo/insight-users
> >
> >


More information about the Insight-users mailing list