📅 2014-Jun-09 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ boost, library ⬩ 📚 Archive
Boost is mostly a template based library, but using certain functionality requires linking with its libraries. On Windows, when you include a Boost header file in your code, it automatically generates a linking dependency on its corresponding library file. This library path is used by the linker to complete its linking operation.
For example, if I use the threading features of Boost, it generates a dependency on the library file: libboost_thread-vc110-mt-gd-1_53.lib
.
This filename has various components: the Boost module, the Visual Studio version, the build type and the Boost version. These are obtained from various definitions in the boost/config/auto_link.hpp
header file.
If you find that your code is looking for a Boost library filename that looks wrong in any way, then you might have to look into the above header file and configure some of the definitions.
For example, I built Boost 1.53 on Visual Studio 2013, even though it is not officially supported. When I used this Boost with my code, the linker complained that it was looking for libboost_thread-vc110-mt-gd-1_53.lib
. This is strange, since I have built both Boost and my code using Visual Studio 2013 (vc120
), but it is looking for Visual Studio 2012 (vc110
). I found that the variable BOOST_LIB_TOOLSET
was set to vc110
in auto_link.hpp
. Changing this fixed the error.
Tried with: Boost 1.53, Visual Studio 2013 and Windows 7 x64