|
Boost Users : |
Subject: [Boost-users] Auto-Linking in Visual Studio 2008
From: Robert Abel (abel_at_[hidden])
Date: 2012-01-03 15:40:18
Hi,
I recently began using boost in a project on Windows using MS Visual
Studio 9.0 2008 using CMake, i.e. the project setup is auto-generated
using the correct boost libraries as link targets. In my project, I link
to boost_thread*.lib, which should be the import library for
boost_thread*.dll.
However, when I compile the project, the I get the following linking error:
> Error 43 fatal error LNK1104: cannot open file
> 'libboost_thread-vc90-mt-1_48.lib' rsb-chat-1 rsb-chat-1
So it seems necessary to have the static library present as well when
linking the executable. At first I thought this was the default
auto-linking behavior described in the documentation, i.e. static
linking. However, once all needed static libraries are supplied, the
final executable still needs the dynamic boost_*.dll libraries. This did
not seem right to me...
Now, when I disable auto-linking using
> #define BOOST_ALL_NO_LIB
the linker will not try to link the static libboost_thread*.lib, but
instead use the boost_thread*.lib that was defined in the project settings.
I couldn't find any documentation on this specific auto-linking behavior.
* Is this expected behavior? Maybe MSVS-specific behavior?
* Does the presence of the static library actually preclude some
dynamic linking from occurring, thus making my executable bigger?
* Or does the static library basically just need to be present and
auto-linking will actually not use it when it's not appropriate?
* Or does auto-linking mix and match, i.e. in my original case, when I
supplied the static libraries: Did it link some functions
statically, while others dynamically?
Thanks,
Robert
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net