[Insight-users] Problems with std::basic_stringbuf and vnl

Luis Ibanez luis.ibanez at kitware.com
Mon, 19 Apr 2004 09:45:46 -0400


Hi Sergio:

Are you configuring your project with CMake ?

It looks like you are not...

and probably during the manual configuration
of your Visual Studio workspace you are not
selecting to link with Multi-Threaded DLLs.

In Visual Studio, not only should all your
builds be made for the same compilation mode
(Debug/Release), they must also be linking to
the same set of Threading libraries
(Multi-Threaded/Single-Threaded).


If you are not using CMake...
do yourself a favor:

              Start using CMake   :-)


All these little annoying configuration issues
are part of the reasons why CMake was created.

Image processing is far more interesting than
fiddling with the little text boxes in Visual
Studio IDE. If you use CMake you will be now
doing image processing instead of doing
configuration fiddling.


Please let us know if you have any problems
setting up a CMakeList.txt for your project.


   Thanks


     Luis


-------------------
Sergio Andres wrote:

> Hi Luis,
> 
> 
> I compiled ITK for Release.
> Then I compiled my application for Release.
> 
> But I got some errors, which are related to vnl_matlab_filewrite class.
> 
> These are the error messages:
> 
> Linking...
> itkvnl.lib(vnl_matlab_filewrite.obj) : error LNK2005: "public: virtual
> __thiscall std::basic_stringbuf<char,struct std::char_traits<char>,class
> std::allocator<char> >::~basic_stringbuf<char,struct
> std::char_traits<char>,class std::allocator<char> >(
> void)"
> (??1?$basic_stringbuf at DU?$char_traits at D at std at  at V?$allocator at D at 2 at  at std at  at UAE at XZ)
> already defined in msvcprt.lib(MSVCP60.dll)
> itkvnl.lib(vnl_matlab_filewrite.obj) : error LNK2005: "protected: void
> __thiscall std::basic_stringbuf<char,struct std::char_traits<char>,class
> std::allocator<char> >::_Tidy(void)"
> (?_Tidy at ?$basic_stringbuf at DU?$char_traits at D at std at  at V?$allocator at D at 2 at  at s
> td at  at IAEXXZ) already defined in msvcprt.lib(MSVCP60.dll)
> itkvnl.lib(vnl_matlab_filewrite.obj) : error LNK2005: "protected: void
> __thiscall std::basic_stringbuf<char,struct std::char_traits<char>,class
> std::allocator<char> >::_Init(char const *,unsigned int,int)"
> (?_Init at ?$basic_stringbuf at DU?$char_traits at D
>  at std at  at V?$allocator at D at 2 at  at std at  at IAEXPBDIH at Z) already defined in
> msvcprt.lib(MSVCP60.dll)
> itkvnl.lib(vnl_matlab_filewrite.obj) : warning LNK4006: "public: virtual
> __thiscall std::basic_stringbuf<char,struct std::char_traits<char>,class
> std::allocator<char> >::~basic_stringbuf<char,struct
> std::char_traits<char>,class std::allocator<char>
>  >(void)"
> (??1?$basic_stringbuf at DU?$char_traits at D at std at  at V?$allocator at D at 2 at  at std at  at UAE at XZ)
> already defined in msvcprt.lib(MSVCP60.dll); second definition ignored
> itkvnl.lib(vnl_matlab_filewrite.obj) : warning LNK4006: "protected: void
> __thiscall std::basic_stringbuf<char,struct std::char_traits<char>,class
> std::allocator<char> >::_Tidy(void)"
> (?_Tidy at ?$basic_stringbuf at DU?$char_traits at D at std at  at V?$allocator at D at 2 at 
>  at std at  at IAEXXZ) already defined in msvcprt.lib(MSVCP60.dll); second
> definition ignored
> itkvnl.lib(vnl_matlab_filewrite.obj) : warning LNK4006: "protected: void
> __thiscall std::basic_stringbuf<char,struct std::char_traits<char>,class
> std::allocator<char> >::_Init(char const *,unsigned int,int)"
> (?_Init at ?$basic_stringbuf at DU?$char_traits
>  at D at std at  at V?$allocator at D at 2 at  at std at  at IAEXPBDIH at Z) already defined in
> msvcprt.lib(MSVCP60.dll); second definition ignored
>    Creating library Release/ASM_Battery.lib and object
> Release/ASM_Battery.exp
> Release/ASM_Battery.exe : fatal error LNK1169: one or more multiply
> defined symbols found
> Error executing link.exe.
> 
> 
> If I compile without using the vnl_matlab_filewrite class, I get no error.
> So I think this has to do with standard streams or string includes ...
> 
> Any help will be appreciated.
> 
> Regards,
> Sergio.
> 
> 
> 
> Luis Ibanez escribió:
> 
>  >
>  > Hi Sergion,
>  >
>  > This usually happens when you mix code compiled
>  > for Release with code compiled for Debug.
>  >
>  > You are probably compiling ITK for one mode and
>  > your application for the other compilation mode.
>  >
>  > This shouldn't be a problem if your application
>  > has a CMakeList.txt file correctly configured...
>  >
>  > You are probably forcing the names of the libraries
>  > to link with,... or maybe you are not using CMake
>  > for configuring your project... ?
>  >
>  > --------
>  >
>  > If you get errors when you compile ITK for Debug,
>  > please post the exact error messages to the list.
>  >
>  >
>  > Error messages are usually very helpful   :-)
>  >
>  >
>  >
>  >   Thanks
>  >
>  >
>  >      Luis
>  >
>  >
>  >
>  > ----------------------
>  > Sergio Andres wrote:
>  >
>  >>
>  >> Hi all,
>  >>
>  >> I have compiled ITK with MSVC++ 6.0 (Release configuration) and my
>  >> application,
>  >> which uses vnl_matlab_filewrite... and I got 4 errors like this:
>  >>
>  >> msvcprt.lib(MSVCP60.dll) : error LNK2005:
>  >> public: virtual __thiscall std::basic_stringbuf<char,struct
>  >> std::char_traits<char>,class std::allocator<char>
>  >>  >::~basic_stringbuf<char,struct std::char_traits<char>,class
>  >> std::allocator<char> >(void)"
>  >> 
> (??1?$basic_stringbuf at DU?$char_traits at D at std at  at V?$allocator at D at 2 at  at std at  at UAE at XZ)
>  >> already defined in itkvnl.lib(vnl_matlab_filewrite.obj)
>  >>
>  >> I don't know what to do to fix it..
>  >>
>  >> Furthermore, I got no errors when I compiled in Debug configuration.
>  >>
>  >> I will appreciate any help.
>  >> Thanks!
>  >>
>  >> Regards,
>  >> Sergio Andres.
>  >>
>  >> _______________________________________________
>  >> Insight-users mailing list
>  >> Insight-users at itk.org
>  >> http://www.itk.org/mailman/listinfo/insight-users
>  >>
>  >
>  >
>  >
>  > _______________________________________________
>  > Insight-users mailing list
>  > Insight-users at itk.org
>  > http://www.itk.org/mailman/listinfo/insight-users
>  >
> 
> 
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>