【问题标题】:Upgrading VS2013 to VS2015 - how to keep linking boost将 VS2013 升级到 VS2015 - 如何保持链接提升
【发布时间】:2016-03-31 13:36:57
【问题描述】:

已经阅读了几十篇关于这个主题的帖子,但似乎没有一个符合我的问题。

所以,我升级了我的VS2013'VS2015'。

我的解决方案中有几十个项目使用 boost 作为附加库。 我也重新编译了 boost。

编译我的项目时出现此错误。

LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc120-mt-s-1_55.lib'

当我为 VS2013 编译 boost 时,lib libboost_thread-vc120-mt-s-1_55.lib 曾经存在。但是在为VS2015 编译 boost 之后,lib 名称已更改为 libboost_thread-vc140-mt-s-1_55.lib(太好了)。

问题

链接器为什么要查找文件libboost_thread-vc120-mt-s-1_55.lib。它如何知道要链接哪个文件?

【问题讨论】:

标签: boost visual-studio-2013 linker visual-studio-2015


【解决方案1】:

我从 VS2013 转换到 VS2015 时遇到了完全相同的问题,同时将 Boost 版本从 1.59 更改为 1.61。

经过两天的谷歌搜索、SO'ing 和尝试不同的变体,我似乎最终找到了一个可行的解决方案,尽管我不知道为什么。

我使用 VS2015 x86 Native Tools Command Prompt 编译了 Boost(我相信与之前的四次尝试完全一样):

> "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
> .\bootstrap
> .\b2 install --prefix="<MY_BOOST_DIR>\msvc14" --buildtype=complete --build-dir="<MY_BOOST_DIR>\build" toolset=msvc-14.0 variant=release,debug link=shared -j4 --address-model=32

在此之后我尝试编译我的非常简单的测试

#include <boost\filesystem.hpp>
#include <iostream>

int main()
{
    boost::filesystem::path rootpath = boost::filesystem::current_path();

    std::cout << rootpath.string() << std::endl;
    std::cin.ignore();
    return 0;
}

为 include 和 lib 目录设置了适当的 Boost 目录。虽然文件“libboost_filesystem-vc140-mt-gd-1_61.lib”可验证地位于 lib 文件夹中,但 VS2015 仍然抱怨找不到该文件。

作为最后一次随机戳,我将目标平台更改为 x64,之后链接器错误更改为有关冲突的警告: 警告 LNK4272:库机器类型 'X86' 与目标机器类型 'x64' 冲突......所以出于某种原因,现在 VS 能够找到该文件!之后,将目标更改回 X86 后配置正常工作,但没有真正改变。

有人可以解释/验证吗?这能解决你的问题吗,@idanshmu?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2012-12-11
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多