[GD-Windows] VC 2005 templates in library error
Brought to you by:
vexxed72
From: Jon W. <hp...@mi...> - 2007-08-06 20:25:13
|
I'm using VC 2005 SP1. Yeah, I know, not trusting a beta version of a crucial tool. Silly me! Anyway, I have a bunch of templates in a bunch of static libraries. However, suddenly, this one template is giving "multiple definitions" link warnings in one library, and then "duplicate definitions" when linking against more than one library that both use the same template. It's almost as if the linker doesn't recognize the template as a template, and treats it as a regular function or something. I'm starting with the code for the template (which is used in multiple static libraries), and then following on with the errors, because the template names are really quite ludicrous... template<typename T> class IIterator { public: virtual bool More() = 0; virtual T Next() = 0; virtual void Dispose() = 0; }; template<typename Iter> inline IIterator<typename Iter::value_type::first_type> * NewMapKeyIterator( Iter const &cur, Iter const &end) { class Ret : public IIterator<typename Iter::value_type::first_type> { public: Iter cur_, end_; bool More() { return cur_ != end_; } typename Iter::value_type::first_type Next() { assert(More()); return (*cur_++).first; } void Dispose() { delete this; } }; Ret *r = new Ret(); r->cur_ = cur; r->end_ = end; return r; } std::map<std::pair<std::string, std::string>, Whatever *> linkMap_; IIterator<std::pair<std::string, std::string> const> *Links() { return NewMapKeyIterator(linkMap_.begin(), linkMap_.end()); } The latter code is repeated in several files (hence the multiple template instantiations). Note that it's complaining about the inner class. What to do? (other than moving the inner class to an outer -- I'd like to stay in inner scope if possible) Is anyone brave enough for Orcas B2? / h+ PS: I think it would be awesome if the compiler could omit default template arguments in the demangling of template names. At least as an option. It might make the errors marginally readable. 1>------ Build started: Project: Components, Configuration: Debug Win32 ------ 1>Creating library... 1>ComponentRendermesh.obj : warning LNK4006: "public: virtual bool __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::More(void)" (?More@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@U?$ pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@ std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pair@V ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@P AVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@V?$ basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@@A BViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$pair @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@ @@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@D@s td@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@@@s td@@0@Z@UAE_NXZ) already defined in ComponentScatterMesh.obj; second definition ignored 1>ComponentRendermesh.obj : warning LNK4006: "public: virtual struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::Next(void)" (?Next@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@U?$ pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@ std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pair@V ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@P AVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@V?$ basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@@A BViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$pair @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@ @@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@D@s td@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@@@s td@@0@Z@UAE?BU?$pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator @D@2@@std@@V12@@5@XZ) already defined in ComponentScatterMesh.obj; second definition ignored 1>ComponentRendermesh.obj : warning LNK4006: "public: virtual void __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::Dispose(void)" (?Dispose@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@ U?$pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V1 2@@std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@ std@@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pai r@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std @@PAVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@ V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@ @@ABViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_t raits@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$p air@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@s td@@@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@ D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@ @@std@@0@Z@UAEXXZ) already defined in ComponentScatterMesh.obj; second definition ignored 1>Build log was saved at "file://c:\code\ogre14\Components\Debug\BuildLog.htm" 1>Components - 0 error(s), 3 warning(s) 2>------ Build started: Project: TheProject, Configuration: Debug Win32 ------ 2>Linking... 2>components.lib(ComponentScatterMesh.obj) : error LNK2005: "public: virtual bool __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::More(void)" (?More@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@U?$ pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@ std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pair@V ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@P AVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@V?$ basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@@A BViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$pair @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@ @@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@D@s td@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@@@s td@@0@Z@UAE_NXZ) already defined in components.lib(ComponentRendermesh.obj) 2>components.lib(ComponentScatterMesh.obj) : error LNK2005: "public: virtual struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::Next(void)" (?Next@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@U?$ pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@ std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pair@V ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@P AVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@V?$ basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@@A BViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$pair @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@ @@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@D@s td@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@@@s td@@0@Z@UAE?BU?$pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator @D@2@@std@@V12@@5@XZ) already defined in components.lib(ComponentRendermesh.obj) 2>components.lib(ComponentScatterMesh.obj) : error LNK2005: "public: virtual void __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::Dispose(void)" (?Dispose@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@ U?$pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V1 2@@std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@ std@@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pai r@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std @@PAVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@ V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@ @@ABViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_t raits@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$p air@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@s td@@@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@ D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@ @@std@@0@Z@UAEXXZ) already defined in components.lib(ComponentRendermesh.obj) 2> Creating library ..\bin\Debug/TheProject.lib and object ..\bin\Debug/TheProject.exp 2>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library 2>..\bin\Debug/TheProject.exe : fatal error LNK1169: one or more multiply defined symbols found -- -- Revenge is the most pointless and damaging of human desires. |