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