通过Visual Studio进行Boost构建并不是选择正确的VS版本或静态链接的库

时间:2009-05-15 01:19:50

标签: c++ visual-studio-2005 boost

#include <boost/regex.hpp>

int main(void)
{
    return 0;
}

错误2致命错误LNK1104:无法打开文件'libboost_regex-vc90-mt-gd-1_38.lib'

这不是一个路径问题。我故意没有.lib构建,并希望链接到mt-sgd-1_38.lib文件,但我不知道我需要设置什么才能使用boost的自动命名选择mt-sgd而不是mt -gd。

另外,我不确定它是如何检测使用vc90的,但我正在尝试使用VS 2005进行构建,即vc80。

3 个答案:

答案 0 :(得分:1)

我相信标志('s')表示静态链接;即:静态链接c-runtime库。这将是您应用程序的项目设置。

另外,对于v80 / v90问题,当我将v90编译器与平台SDK的某些部分一起安装时,我也有类似的问题。如果您在链接器对象名称中获得v90,则可能实际上是使用v90编译器构建的(这可能在2005 IDE中,具体取决于路径设置和安装的内容)。只要一切都匹配,就不应该成为问题。

答案 1 :(得分:0)

尝试将BOOST_LIB_DIAGNOSTIC添加到预处理器中,我之前用过这个来解决这些问题,但是我通常遇到了相反的问题。它尝试静态,我想要动态,我上次通过添加BOOST_THREAD_USE_DLL修复,必须有其他等价物 - 我假设您只需用THREAD代替您正在使用的库的名称。

答案 2 :(得分:0)

对我来说有用的是在构建时使用此选项:runtime-link = static,如

.\b2 runtime-link=static