views:

246

answers:

1

Hi,

I have a rather obscure linking problem in Visual Studio 2008. The linker error message is: "LNK1104: cannot open file 'boost_thread-vc90-mt-gd-1_38.lib'". All pathes and dependencies are set. What I noticed though is that Visual Studio misses boost_thread-vc90-mt-gd-1_38.lib and not libboost_thread-vc90-mt-gd-1_38.lib (notice the lib at the beginning of the file name). I added the .lib as libboost_thread-vc90-mt-gd-1_38.lib to the project and it appears as libboost_thread-vc90-mt-gd-1_38.lib in the command line.

Why does Visual Studio the beginning of the file name?

+1  A: 

There is a rule for naming libraries in Boost:

1) boost_thread-vc90-mt-gd-1_38.lib for dynamically linked version 2) libboost_thread-vc90-mt-gd-1_38.lib for statically linked version

BOOST_LIB_PREFIX: "lib" for static libraries otherwise "".

There is a preprocessor define that you can define in your project in order to use the dynamically linked version of a boost library BOOST_DYN_LINK=1

It has this description:

BOOST_DYN_LINK: Optional: when set link to dll rather than static library.

Another define that tells to use the dynamic version of Boost.Thread is BOOST_THREAD_USE_DLL

skwllsp
thank you, somewhere deep inside the project there was a symbol set to use the dll.
Tobias Langner