On Fri, Apr 12, 2013 at 07:47:05AM -0700, Steven Watanabe wrote:
AMDG
On 04/12/2013 07:23 AM, young wrote:
Still not clear.
libboost_thread-vc100-mt-s-1_53.lib vs libboost_thread-vc100-mt-1_53.lib
I know the "s" means static library. What is different between them?
"s" means that it links to the static runtime (/MT). See http://www.boost.org/more/getting_started/windows.html#library-naming
There are two very different parts of the filename pertaining to "static linking". One is about whether the library is a static library or an import library for a DLL. Filenames beginning with "libboost" are static libraries. Filenames beginning with "boost" are import libraries for DLLs. The other is about what kind of VC++ runtime (CRT) the library is built against, the static runtime (LIBCMT/LIBCMTD) or the DLL runtime (MSVCR*.DLL and whatever the debug version is called). Filenames with "s" in the middle are using the static runtime. Filenames without "s" are using the DLL runtime. Note that these are very different concerns, and the autolinker decides which one to used based on the settings and default settings your Boost code has. If the autolinker expects a particular name, you need to either build your Boost in a way that you get such a library, or change the autolinker configuration macros so that it wants a different kind. As shown in Watanabe's link, the B2 feature to control static/dynamic Boost is link=, and the feature to control static/dynamic runtime is runtime-link=. -- Lars Viklund | zao@acc.umu.se