我在Visual Studio 2008中有一个相当模糊的链接问题。链接器错误消息是:“LNK1104:无法打开文件'boost_thread-vc90-mt-gd-1_38.lib'”。所有pathes和依赖项都已设置。 我注意到的是Visual Studio错过了boost_thread-vc90-mt-gd-1_38.lib而不是 libboost_thread-vc90-mt-gd-1_38.lib (请注意文件开头的lib名称)。我将.lib作为libboost_thread-vc90-mt-gd-1_38.lib添加到项目中,并在命令行中显示为libboost_thread-vc90-mt-gd-1_38.lib。
为什么Visual Studio是文件名的开头?
答案 0 :(得分:1)
在Boost中有一个命名库的规则:
1)boost_thread-vc90-mt-gd-1_38.lib用于动态链接版本 2)用于静态链接版本的libboost_thread-vc90-mt-gd-1_38.lib
BOOST_LIB_PREFIX: "lib" for static libraries otherwise "".
您可以在项目中定义预处理器定义,以便使用动态链接版本的boost库BOOST_DYN_LINK=1
有这样的描述:
BOOST_DYN_LINK: Optional: when set link to dll rather than static library.
另一个使用Boost.Thread动态版本的定义是BOOST_THREAD_USE_DLL