2010-04-01 112 views
0

在Visual Studio 2008中,我有一个相当模糊的链接问题。链接器错误消息是:“LNK1104:无法打开文件'boost_thread-vc90-mt-gd-1_38.lib'”。所有路径和依赖关系都已设置。 但我注意到,虽然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 2008中连接boost的链接器问题

为什么Visual Studio是文件名的开头?

回答

1

有用于在升压命名程序库的规则:

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

+0

谢谢你,深的地方在项目中有设置为使用DLL中的符号。 – 2010-04-01 14:40:35