[Insight-users] Link error in Release: TriangleCellTopology

Matt McCormick matt.mccormick at kitware.com
Tue Nov 15 10:08:19 EST 2011


Hi Dženan,

Does it work if you re-add the virtual keyword, then change
'ITK_EXPORT' on line 45 to 'ITKCommon_EXPORT'?

Thanks,
Matt

2011/11/15 Dženan Zukić <dzenanz at gmail.com>:
> 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>
>
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.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