[Insight-developers] Re: [Insight-users] Problems with Watershed class (fwd)

Joshua Cates cates at sci . utah . edu
Thu, 11 Jul 2002 10:10:27 -0600 (MDT)


Actually, I think I've just found the problem.  I neglected to add two
non-templated classes into the algorithms library.

Josh.
___________________________
 Josh Cates
 School of Computer Science
 University of Utah
 Email: cates@sci.utah.edu
 Phone: (801) 587-7697
 URL:   www.cs.utk.edu/~cates


On Thu, 11 Jul 2002, Joshua Cates wrote:

> Hi,
>
> I've had this same problem on Linux with gcc.  Does anyone have any ideas
> as to why this might be happening?  I have so far not been able to figure
> it out.  It seems you cannot instantiate the WatershedImageFilter class
> more than once in an application without getting these multiple symbol
> errors when linking.
>
> Josh.
>
> ______________________________
>  Josh Cates
>  School of Computer Science
>  University of Utah
>  Email: cates@sci.utah.edu
>  Phone: (801) 587-7697
>  URL:   www.cs.utk.edu/~cates
>
>
> ---------- Forwarded message ----------
> Date: Tue, 2 Jul 2002 17:21:06 +0200
> From: Samuel Rodr=EDguez Bescos <srodrigu@gbt.tfo.upm.es>
> To: Nils Hanssen <hanssen@caesar.de>
> Cc: insight-users@public.kitware.com
> Subject: Re: [Insight-users] Problems with Watershed class
>
> Thanks Nils for your help.
>
> It runs OK now with warning instead errors.
>
> Thank again,
>
> Samuel
>
>
>   ----- Original Message -----
>   From: Nils Hanssen
>   To: 'Samuel Rodr=EDguez Bescos' ; insight-users@public.kitware.com
>   Sent: Tuesday, July 02, 2002 3:16 PM
>   Subject: RE: [Insight-users] Problems with Watershed class
>
>
>   Hi Samuel,
>
>   I have exactly the same double symbols when linking my project with the=
 WatershedImageFilter.
>   It's not the clean way, but until the problem is discovered, you can tu=
rn these errors into warnings by including the "/FORCE:MULTIPLE" in the lin=
king options of MSVC.
>
>   Regards,
>   Nils
>     -----Original Message-----
>     From: insight-users-admin@public.kitware.com [mailto:insight-users-ad=
min@public.kitware.com]On Behalf Of Samuel Rodr=EDguez Bescos
>     Sent: Tuesday, July 02, 2002 2:04 PM
>     To: insight-users@public.kitware.com
>     Subject: [Insight-users] Problems with Watershed class
>
>
>     Hello everybody.
>
>     I'm developing an example based in GaussianFilter example in order to=
 segmentate a PNG Image with the watershed algorithm. In the Base class I h=
ave defined a member of the WatershedImageFilter class and the estructure i=
s the same of the Gaussian Filter example's.
>
>     I have a linking problem the error lines are this:
>
>     =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>
>     -------------------Configuration: Segmentation - Win32 Debug---------=
-----------
>     Linking...
>     liSegmentationConsole.obj : error LNK2005: "public: bool __thiscall i=
tk::watershed::OneWayEquivalencyTable::Add(unsigned long,unsigned long)" (?=
Add@OneWayEquivalencyTable@watershed@itk@@QAE_NKK@Z) already defined in Seg=
mentation.obj
>     liSegmentationConsole.obj : error LNK2005: "public: void __thiscall i=
tk::watershed::OneWayEquivalencyTable::Flatten(void)" (?Flatten@OneWayEquiv=
alencyTable@watershed@itk@@QAEXXZ) already defined in Segmentation.obj
>     liSegmentationConsole.obj : error LNK2005: "public: unsigned long __t=
hiscall itk::watershed::OneWayEquivalencyTable::RecursiveLookup(unsigned in=
t)const " (?RecursiveLookup@OneWayEquivalencyTable@watershed@itk@@QBEKI@Z) =
already defined in Segmentatio
>     n.obj
>     liSegmentationConsole.obj : error LNK2005: "protected: virtual void _=
_thiscall itk::watershed::OneWayEquivalencyTable::UpdateOutputInformation(v=
oid)" (?UpdateOutputInformation@OneWayEquivalencyTable@watershed@itk@@MAEXX=
Z) already defined in Segmenta
>     tion.obj
>     liSegmentationConsole.obj : error LNK2005: "protected: virtual void _=
_thiscall itk::watershed::OneWayEquivalencyTable::PrintSelf(class std::basi=
c_ostream<char,struct std::char_traits<char> > &,class itk::Indent)const " =
(?PrintSelf@OneWayEquivalencyT
>     able@watershed@itk@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@st=
d@@VIndent@3@@Z) already defined in Segmentation.obj
>     liSegmentationConsole.obj : error LNK2005: "public: bool __thiscall i=
tk::watershed::EquivalencyTable::Add(unsigned long,unsigned long)" (?Add@Eq=
uivalencyTable@watershed@itk@@QAE_NKK@Z) already defined in Segmentation.ob=
j
>     liSegmentationConsole.obj : error LNK2005: "public: void __thiscall i=
tk::watershed::EquivalencyTable::Flatten(void)" (?Flatten@EquivalencyTable@=
watershed@itk@@QAEXXZ) already defined in Segmentation.obj
>     liSegmentationConsole.obj : error LNK2005: "public: unsigned long __t=
hiscall itk::watershed::EquivalencyTable::RecursiveLookup(unsigned int)cons=
t " (?RecursiveLookup@EquivalencyTable@watershed@itk@@QBEKI@Z) already defi=
ned in Segmentation.obj
>     liSegmentationConsole.obj : error LNK2005: "protected: virtual void _=
_thiscall itk::watershed::EquivalencyTable::UpdateOutputInformation(void)" =
(?UpdateOutputInformation@EquivalencyTable@watershed@itk@@MAEXXZ) already d=
efined in Segmentation.obj
>     liSegmentationConsole.obj : error LNK2005: "protected: virtual void _=
_thiscall itk::watershed::EquivalencyTable::PrintSelf(class std::basic_ostr=
eam<char,struct std::char_traits<char> > &,class itk::Indent)const " (?Prin=
tSelf@EquivalencyTable@watersh
>     ed@itk@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@VIndent@3=
@@Z) already defined in Segmentation.obj
>     liSegmentationConsole.obj : error LNK2005: "public: virtual void __th=
iscall itk::WatershedMiniPipelineProgressCommand::Execute(class itk::Object=
 *,class itk::EventObject const &)" (?Execute@WatershedMiniPipelineProgress=
Command@itk@@UAEXPAVObject@2@A
>     BVEventObject@2@@Z) already defined in Segmentation.obj
>     liSegmentationConsole.obj : error LNK2005: "public: virtual void __th=
iscall itk::WatershedMiniPipelineProgressCommand::Execute(class itk::Object=
 const *,class itk::EventObject const &)" (?Execute@WatershedMiniPipelinePr=
ogressCommand@itk@@UAEXPBVObje
>     ct@2@ABVEventObject@2@@Z) already defined in Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "public: bool __thisca=
ll itk::watershed::OneWayEquivalencyTable::Add(unsigned long,unsigned long)=
" (?Add@OneWayEquivalencyTable@watershed@itk@@QAE_NKK@Z) already defined in=
 Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "public: void __thisca=
ll itk::watershed::OneWayEquivalencyTable::Flatten(void)" (?Flatten@OneWayE=
quivalencyTable@watershed@itk@@QAEXXZ) already defined in Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "public: unsigned long=
 __thiscall itk::watershed::OneWayEquivalencyTable::RecursiveLookup(unsigne=
d int)const " (?RecursiveLookup@OneWayEquivalencyTable@watershed@itk@@QBEKI=
@Z) already defined in Segment
>     ation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "protected: virtual vo=
id __thiscall itk::watershed::OneWayEquivalencyTable::UpdateOutputInformati=
on(void)" (?UpdateOutputInformation@OneWayEquivalencyTable@watershed@itk@@M=
AEXXZ) already defined in Segm
>     entation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "protected: virtual vo=
id __thiscall itk::watershed::OneWayEquivalencyTable::PrintSelf(class std::=
basic_ostream<char,struct std::char_traits<char> > &,class itk::Indent)cons=
t " (?PrintSelf@OneWayEquivale
>     ncyTable@watershed@itk@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@=
@@std@@VIndent@3@@Z) already defined in Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "public: bool __thisca=
ll itk::watershed::EquivalencyTable::Add(unsigned long,unsigned long)" (?Ad=
d@EquivalencyTable@watershed@itk@@QAE_NKK@Z) already defined in Segmentatio=
n.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "public: void __thisca=
ll itk::watershed::EquivalencyTable::Flatten(void)" (?Flatten@EquivalencyTa=
ble@watershed@itk@@QAEXXZ) already defined in Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "public: unsigned long=
 __thiscall itk::watershed::EquivalencyTable::RecursiveLookup(unsigned int)=
const " (?RecursiveLookup@EquivalencyTable@watershed@itk@@QBEKI@Z) already =
defined in Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "protected: virtual vo=
id __thiscall itk::watershed::EquivalencyTable::UpdateOutputInformation(voi=
d)" (?UpdateOutputInformation@EquivalencyTable@watershed@itk@@MAEXXZ) alrea=
dy defined in Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "protected: virtual vo=
id __thiscall itk::watershed::EquivalencyTable::PrintSelf(class std::basic_=
ostream<char,struct std::char_traits<char> > &,class itk::Indent)const " (?=
PrintSelf@EquivalencyTable@wat
>     ershed@itk@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@VInde=
nt@3@@Z) already defined in Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "public: virtual void =
__thiscall itk::WatershedMiniPipelineProgressCommand::Execute(class itk::Ob=
ject *,class itk::EventObject const &)" (?Execute@WatershedMiniPipelineProg=
ressCommand@itk@@UAEXPAVObject
>     @2@ABVEventObject@2@@Z) already defined in Segmentation.obj
>     liSegmentationConsoleBase.obj : error LNK2005: "public: virtual void =
__thiscall itk::WatershedMiniPipelineProgressCommand::Execute(class itk::Ob=
ject const *,class itk::EventObject const &)" (?Execute@WatershedMiniPipeli=
neProgressCommand@itk@@UAEXPBV
>     Object@2@ABVEventObject@2@@Z) already defined in Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "public: bool __thiscal=
l itk::watershed::OneWayEquivalencyTable::Add(unsigned long,unsigned long)"=
 (?Add@OneWayEquivalencyTable@watershed@itk@@QAE_NKK@Z) already defined in =
Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "public: void __thiscal=
l itk::watershed::OneWayEquivalencyTable::Flatten(void)" (?Flatten@OneWayEq=
uivalencyTable@watershed@itk@@QAEXXZ) already defined in Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "public: unsigned long =
__thiscall itk::watershed::OneWayEquivalencyTable::RecursiveLookup(unsigned=
 int)const " (?RecursiveLookup@OneWayEquivalencyTable@watershed@itk@@QBEKI@=
Z) already defined in Segmenta
>     tion.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "protected: virtual voi=
d __thiscall itk::watershed::OneWayEquivalencyTable::UpdateOutputInformatio=
n(void)" (?UpdateOutputInformation@OneWayEquivalencyTable@watershed@itk@@MA=
EXXZ) already defined in Segme
>     ntation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "protected: virtual voi=
d __thiscall itk::watershed::OneWayEquivalencyTable::PrintSelf(class std::b=
asic_ostream<char,struct std::char_traits<char> > &,class itk::Indent)const=
 " (?PrintSelf@OneWayEquivalen
>     cyTable@watershed@itk@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@=
@std@@VIndent@3@@Z) already defined in Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "public: bool __thiscal=
l itk::watershed::EquivalencyTable::Add(unsigned long,unsigned long)" (?Add=
@EquivalencyTable@watershed@itk@@QAE_NKK@Z) already defined in Segmentation=
=2Eobj
>     liSegmentationConsoleGUI.obj : error LNK2005: "public: void __thiscal=
l itk::watershed::EquivalencyTable::Flatten(void)" (?Flatten@EquivalencyTab=
le@watershed@itk@@QAEXXZ) already defined in Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "public: unsigned long =
__thiscall itk::watershed::EquivalencyTable::RecursiveLookup(unsigned int)c=
onst " (?RecursiveLookup@EquivalencyTable@watershed@itk@@QBEKI@Z) already d=
efined in Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "protected: virtual voi=
d __thiscall itk::watershed::EquivalencyTable::UpdateOutputInformation(void=
)" (?UpdateOutputInformation@EquivalencyTable@watershed@itk@@MAEXXZ) alread=
y defined in Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "protected: virtual voi=
d __thiscall itk::watershed::EquivalencyTable::PrintSelf(class std::basic_o=
stream<char,struct std::char_traits<char> > &,class itk::Indent)const " (?P=
rintSelf@EquivalencyTable@wate
>     rshed@itk@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@VInden=
t@3@@Z) already defined in Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "public: virtual void _=
_thiscall itk::WatershedMiniPipelineProgressCommand::Execute(class itk::Obj=
ect *,class itk::EventObject const &)" (?Execute@WatershedMiniPipelineProgr=
essCommand@itk@@UAEXPAVObject@
>     2@ABVEventObject@2@@Z) already defined in Segmentation.obj
>     liSegmentationConsoleGUI.obj : error LNK2005: "public: virtual void _=
_thiscall itk::WatershedMiniPipelineProgressCommand::Execute(class itk::Obj=
ect const *,class itk::EventObject const &)" (?Execute@WatershedMiniPipelin=
eProgressCommand@itk@@UAEXPBVO
>     bject@2@ABVEventObject@2@@Z) already defined in Segmentation.obj
>     LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of oth=
er libs; use /NODEFAULTLIB:library
>     Debug/Segmentation.exe : fatal error LNK1169: one or more multiply de=
fined symbols found
>     Error executing link.exe.
>
>     Segmentation.exe - 37 error(s), 1 warning(s)
>
>     =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DEND=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
>
>       I'm using the Beta Release and MSVC 6.0.
>
>     Could anybody Know what is hapening and help me?
>
>     Thanks in advance.
>
>     Samuel
>
>
>
> _______________________________________________
> Insight-developers mailing list
> Insight-developers@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-developers
>