Thanks a lot, Chris!

I actually did some search and I think I found the cause of the problem: it
appears that by default you are linking to Boost libraries statically!

But when in the same project you are linking some libraries statically (
Boost in my case) and others dynamically (Open Babel in my case) you almost
likely will have some linkage failures.

Solution is to link to Boost libraries dynamically using the following
define: BOOST_ALL_DYN_LINK.


On Thu, Oct 3, 2013 at 5:33 PM, Chris Morley <c.mor...@gaseq.co.uk> wrote:

> On 03/10/2013 11:33, Anton Simakov wrote:
> > Hi!
> >
> > I'm trying to use Boost.Log 2.0 in my project which is based on Open
> Babel.
> > I'm currently compiling at Windows with Visual C++ 2010 and linkage
> > fails with the following message
> >
> > libboost_log-vc100-mt-gd-1_54.lib(exceptions.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@DU?$char_traits@D@std@@V?$allocator@D@2@@std@
> @UAE@XZ)
> > already defined in openbabel-2.lib(openbabel-2.dll)
> >
> > libboost_log-vc100-mt-gd-1_54.lib(exceptions.obj) : error LNK2005:
> > "public: __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> >(int)"
> > (??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@
> @QAE@H@Z)
> > already defined in openbabel-2.lib(openbabel-2.dll)
> >
> > fatal error LNK1169: one or more multiply defined symbols found
> >
> > Seems like both openbabel-2.dll and libboost_log-vc100-mt-gd-1_54.lib
> > exporting same symbols.
> > Boost binaries are from official sourceforge.net
> > <http://sourceforge.net> page and openbabel-2.dll was built by myself,
> > but the same symbols are exported by openbabel-2.dll from official
> binaries.
> >
> > Does anyone knows how to fix that?
>
> I have had this sort of problem in the past with wxWidgets rather than
> Boost but I think it was still with std::basic_stringbuf. I don't know
> how to solve it, but the following may help. Check that the DLLs are
> both built using the same compiler and are using the same runtime
> libraries. A final workaround is to set the option "Multiply Defined
> Symbol Only (/FORCE:MULTIPLE)" in Linker/General/Force File Output. This
> is said to be dangerous but has been ok when I used it. The problem is
> described in several sites on the web but for the ones I found it was
> not very clearly defined and was without a general solution.
>
> Chris
>
>
>
> ------------------------------------------------------------------------------
> October Webinars: Code for Performance
> Free Intel webinars can help you accelerate application performance.
> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most
> from
> the latest Intel processors and coprocessors. See abstracts and register >
> http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk
> _______________________________________________
> OpenBabel-discuss mailing list
> OpenBabel-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk
_______________________________________________
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss

Reply via email to