【问题标题】:LNK1104 cannot open file libboost_regex-vc100-mt-gd-1_54LNK1104 无法打开文件 libboost_regex-vc100-mt-gd-1_54
【发布时间】:2015-11-21 23:43:21
【问题描述】:

我已经下载了 boost 库并想将它包含在 Visual c++ 中,但是在从 boost 网站复制一段示例代码后,我得到了错误

“LNK1104 无法打开文件‘libboost_regex-vc100-mt-gd-1_54’”

该文件确实存在。我猜它是我在命令提示符下运行 bootstrap 命令时创建的,我遵循指南https://www.youtube.com/watch?v=6trC5zVXzG0

我使用的示例文件如下:

#include <boost/regex.hpp>
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string line;
    boost::regex pat("^Subject: (Re: |Aw: )*(.*)");
    while (cin)
    {
        getline(cin, line);
        boost::smatch matches;
        if (boost::regex_match(line, matches, pat))
            cout << matches[2] << endl;
    }
    return 0;
}

很抱歉,我知道这种问题在堆栈溢出时已经出现过好几次了,但是我已经尝试了我见过的大多数解决方案,但错误仍然存​​在。

在 Visual c++ 2015 的解决方案资源管理器中,我点击我的项目,然后点击属性,然后在 VC++ 目录选项卡下,我已将目录“C:\Program Files\Boost”添加到包含目录中,并将目录“C:\Program Files\Boost\stage\lib”放入库目录。但问题仍然存在。堆栈上的类似问题要求将目录“C:\Program Files\Boost\stage\lib”添加到 C/C++ 选项卡下的常规选项卡下的附加包含目录,以及内部常规选项卡下的附加包含目录链接器选项卡。但是所有这些更改对错误没有影响。堆栈上的另一个解决方案是将目录“C:\Program Files\Boost\stage\lib”添加到链接器选项卡下输入选项卡下的附加依赖项中,但是当我这样做时,错误变为:

“LNK1104 无法打开文件 'C:\Program Files\Boost\stage\lib.ob'”

我不确定这是否是对错误的改进

因此,在尝试了所有这些似乎对其他人有效的解决方案之后,我一直遇到同样的错误。那么有谁知道错误的原因可能是什么。

【问题讨论】:

  • 我在 libboost_regex-vc100-mt-gd-1_54.lib 中添加了;进入配置属性 -> 链接器 -> 输入中的附加依赖项属性。这似乎将错误更改为 4 个新错误,“LNK2038 Mismatched detection for '_MSC_VER':value '1600' doesn't match value '1900' in stdafx.obj”
  • 尝试重建library。 Visual c++ 2015 == v140,你正在链接 vc100 版本。

标签: visual-c++ boost linker boost-regex


【解决方案1】:

您收到 LNK 错误,这意味着您的链接器属性可能缺少某些内容。确保您已将 boost 文件夹和 boost\stage\lib 文件夹添加到 Project Properties > configuration > Linker > "Additional Library Directories"。

另外请注意,如果您使用的是 Visual Studio 2015,您可能应该使用 msvc-14.0 而不是 msvc-10.0 生成 boost 二进制文件。否则,您的 Platform Toolset 属性应设置为 v100(默认为 v140)。您可以从“项目属性”>“配置”>“常规”>“平台工具集”更改此设置,但您需要安装该版本的 Visual Studio。

【讨论】:

    【解决方案2】:

    如果 Aciel 的回答没有解决你的问题(因为我看到你还没有接受那个答案),我相信这是因为你将你的 boost lib 编译为 32 位,并且你在 64 位中使用它们程序。 如果是这样,请尝试

    bjam --toolset=msvc-14.0 --build-type=complete address-model=64
    

    将你的 boost lib 重建为 64 位

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2014-11-01
      • 2014-09-04
      • 1970-01-01
      相关资源
      最近更新 更多