[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
>