[Insight-users] Link error in Release: TriangleCellTopology

Dženan Zukić dzenanz at gmail.com
Tue Nov 15 09:16:02 EST 2011


It compiles correctly in release mode when I remove the "virtual" keyword.
However with this change there is an error in debug and relwithdebinfo
modes:

error LNK2019: unresolved external symbol "public: __cdecl
itk::TriangleCellTopology::~TriangleCellTopology(void)"
(??1TriangleCellTopology at itk@@QEAA at XZ) referenced in function "int `public:
__cdecl itk::TriangleCell<class itk::CellInterface<float,class
itk::CellTraitsInfo<3,float,float,unsigned __int64,unsigned
__int64,unsigned __int64,class itk::Point<float,3>,class
itk::VectorContainer<unsigned __int64,class itk::Point<float,3> >,class
std::set<unsigned __int64,struct std::less<unsigned __int64>,class
std::allocator<unsigned __int64> > > > >::TriangleCell<class
itk::CellInterface<float,class itk::CellTraitsInfo<3,float,float,unsigned
__int64,unsigned __int64,unsigned __int64,class itk::Point<float,3>,class
itk::VectorContainer<unsigned __int64,class itk::Point<float,3> >,class
std::set<unsigned __int64,struct std::less<unsigned __int64>,class
std::allocator<unsigned __int64> > > > >(void)'::`1'::dtor$1" (?dtor$1@
?0???0?$TriangleCell at V?$CellInterface at MV?$CellTraitsInfo@
$02MM_K_K_KV?$Point at M$02 at itk@@V?$VectorContainer at _KV?$Point at M$02 at itk@@@2 at V
?$set at _KU?$less at _K@std@@V?$allocator at _K@2@@std@@@itk@@@itk@@@itk@@QEAA at XZ
@4HA)

On Tue, Nov 15, 2011 at 15:00, Arnaud Gelas <arnaud_gelas at hms.harvard.edu>wrote:

> I guess the problem has been introduced
> in d7b64276cd2f15d336c50df76b275e7a67b80c57, the destructor became virtual
> (?). Apart from that I don't see any recent changes on these files...
>
> Can you try removing the virtual keyword ?
>
> On Nov 15, 2011, at 8:44 AM, Arnaud Gelas wrote:
>
> My bad, it was already implemented in the corresponding cxx file :-/ ...
>
> Which version of Microsoft Visual is it?
>
> On Nov 15, 2011, at 8:24 AM, Dženan Zukić wrote:
>
> I tried. It gives a different error then:
>
> 2>ITKCommon-4.0.lib(itkTriangleCellTopology.obj) : error LNK2005: "public:
> __cdecl itk::TriangleCellTopology::TriangleCellTopology(void)"
> (??0TriangleCellTopology at itk@@QEAA at XZ) already defined in qeUtil.obj
> 2>     Creating library D:/Repo/Spine/Release/Spine.lib and object
> D:/Repo/Spine/Release/Spine.exp
> 2>D:\Repo\Spine\Release\Spine.exe : fatal error LNK1169: one or more
> multiply defined symbols found
>
> 2011/11/15 Dženan Zukić <dzenanz at gmail.com>
>
>> You mean in the source code of TriangleCellTopology?
>>
>> 2011/11/15 Arnaud Gelas <arnaud_gelas at hms.harvard.edu>
>>
>>> Hi Dzenan,
>>>
>>> Can you try changing as follows, please?
>>>
>>>  39   TriangleCellTopology();
>>>  40   virtual ~TriangleCellTopology();
>>>
>>> by
>>>
>>>  39   TriangleCellTopology() {}
>>>  40   virtual ~TriangleCellTopology() {}
>>>
>>> My 2 cts,
>>> Arnaud
>>>
>>> On Nov 15, 2011, at 6:45 AM, Dženan Zukić wrote:
>>>
>>> Hi all,
>>>
>>> I updated my ITK to commit dd21441682b47f9e553259d2c2948c71c806bcdd (one
>>> revision after RC2). Now my project no longer compiles in release mode
>>> (debug and relwithdebinfo compile fine). The error is given below. The code
>>> used is:
>>>
>>> #include "itkTriangleCell.h"
>>> //other includes
>>>
>>> typedef MeshType::CellType CellType;
>>> typedef CellType::CellAutoPointer CellAutoPointer;
>>> typedef itk::TriangleCell< CellType > TriangleType;
>>>
>>> //later I use it:
>>> CellAutoPointer tr;
>>> tr.TakeOwnership(new TriangleType);
>>>
>>> Any hints about how to fix it?
>>>
>>> Regards,
>>> Dženan
>>>
>>> error LNK2019: unresolved external symbol "public: virtual __cdecl
>>> itk::TriangleCellTopology::~TriangleCellTopology(void)"
>>> (??1TriangleCellTopology at itk@@UEAA at XZ) referenced in function "int
>>> `public: __cdecl itk::TriangleCell<class itk::CellInterface<float,class
>>> itk::CellTraitsInfo<3,float,float,unsigned __int64,unsigned
>>> __int64,unsigned __int64,class itk::Point<float,3>,class
>>> itk::VectorContainer<unsigned __int64,class itk::Point<float,3> >,class
>>> std::set<unsigned __int64,struct std::less<unsigned __int64>,class
>>> std::allocator<unsigned __int64> > > > >::TriangleCell<class
>>> itk::CellInterface<float,class itk::CellTraitsInfo<3,float,float,unsigned
>>> __int64,unsigned __int64,unsigned __int64,class itk::Point<float,3>,class
>>> itk::VectorContainer<unsigned __int64,class itk::Point<float,3> >,class
>>> std::set<unsigned __int64,struct std::less<unsigned __int64>,class
>>> std::allocator<unsigned __int64> > > > >(void)'::`1'::dtor$1" (?dtor$1@
>>> ?0???0?$TriangleCell at V?$CellInterface at MV?$CellTraitsInfo@
>>> $02MM_K_K_KV?$Point at M$02 at itk@@V?$VectorContainer at _KV?$Point at M$02 at itk
>>> @@@2 at V?$set at _KU?$less at _K@std@@V?$allocator at _K@2@@std@@@itk@@@itk@@@itk@
>>> @QEAA at XZ@4HA)
>>>
>>>
>>> <ATT00001.txt>
>>>
>>>
>>>
>>
>
> <ATT00001.txt>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20111115/679773d7/attachment.htm>


More information about the Insight-users mailing list