【问题标题】:LNK1104: cannot open file 'libboost_date_time-vc110-mt-gd-1_51.lib' ; File is not even included in dependencies or additional lib directoriesLNK1104:无法打开文件“libboost_date_time-vc110-mt-gd-1_51.lib”;文件甚至不包含在依赖项或其他 lib 目录中
【发布时间】:2019-01-14 20:24:56
【问题描述】:

所以我已经阅读了关于同一问题here 的线程上的答案。但是没有答案可以解决我的问题。我正在使用 Visual Studio 2017 (v141),因此使用 -vc141- 构建了 lib 文件。

当我为链接器打开 \verbose 时,我发现有些东西关闭了。

1>Starting pass 1
1>Processed /DEFAULTLIB:msvcprtd
1>Processed /DEFAULTLIB:libboost_date_time-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:libboost_filesystem-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:libboost_system-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:uuid.lib
1>Processed /DEFAULTLIB:MSVCRT
1>Processed /DEFAULTLIB:OLDNAMES
1>Processed /DEFAULTLIB:MSVCMRT
1>Processed /DEFAULTLIB:MSCOREE
1>Barrage.obj : /DEBUG:FASTLINK is not supported when managed code is present; restarting link with /DEBUG:FULL
1>
1>Invoking LINK.EXE:
1> /ERRORREPORT:PROMPT @C:\Users\oliviefr\AppData\Local\Temp\tmpdc1f49624fae4111864f892383898874.rsp
1> /DEBUG:FORCEFULL
1>
1>Starting pass 1
1>Processed /DEFAULTLIB:msvcprtd
1>Processed /DEFAULTLIB:libboost_date_time-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:libboost_filesystem-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:libboost_system-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:uuid.lib
1>Processed /DEFAULTLIB:MSVCRT
1>Processed /DEFAULTLIB:OLDNAMES
1>Processed /DEFAULTLIB:MSVCMRT
1>Processed /DEFAULTLIB:MSCOREE
1>LINK : MSIL module encountered; incremental linking is disabled for MSIL; performing full link
1>
1>Invoking LINK.EXE:
1> /ERRORREPORT:PROMPT @C:\Users\oliviefr\AppData\Local\Temp\tmpdc1f49624fae4111864f892383898874.rsp /DEBUG:FORCEFULL
1> /incremental:no
1> /nologo
1> /fullbuild
1>
1>Starting pass 1
1>Processed /DEFAULTLIB:msvcprtd
1>Processed /DEFAULTLIB:libboost_date_time-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:libboost_filesystem-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:libboost_system-vc110-mt-gd-1_51.lib
1>Processed /DEFAULTLIB:uuid.lib
1>Processed /DEFAULTLIB:MSVCRT
1>Processed /DEFAULTLIB:OLDNAMES
1>Processed /DEFAULTLIB:MSVCMRT
1>Processed /DEFAULTLIB:MSCOREE
1>
1>Searching libraries
1>    Searching C:\Program Files\MATLAB\R2017a\extern\lib\win64\microsoft\libmat.lib:
1>    Searching C:\Program Files\MATLAB\R2017a\extern\lib\win64\microsoft\libmx.lib:
1>LINK : fatal error LNK1104: cannot open file 'msvcprtd.lib'
1>Done building project "CequeauQuantite.vcxproj" -- FAILED.

Processed /DEFAULTLIB:libboost_date_time-vc110-mt-gd-1_51.lib 是什么?为什么叫它?我仍然是编程初学者,对这个输出了解不多。

我可以稍后上传显示我的属性的图像(现在 imgure 出现错误),或者我可以粘贴 *.vcxproj 文件。谢谢

【问题讨论】:

  • 如果这是 Visual Studio 2017,则说明您使用了错误的 boost 二进制文件。这些仅适用于 Visual Studio 2012。甚至将这些用于任何其他编译器都是 UB。 boost-1.51 也很老了。我将获得为 VS 2017 构建的更新版本。
  • 感谢您的回答。我有几个问题。 UB 是什么意思,我也没有尝试使用libboost_date_time-vc110-mt-gd-1_51.lib,但它似乎是默认值。然后我应该只在 Visual Studio 2012 上打开程序还是简单地更新到最近的提升会更好?如果我获得更新的增强版本,代码是否存在风险?
  • 未定义的行为。通过将这些不兼容的二进制文件与 Visual Studio 2012 以外的任何编译器一起使用,您的程序可能会崩溃或遇到意外行为/错误结果。这就是 boost 提供每个编译器二进制文件的原因。
  • 简单地更新到最近的提升会更好吗?我建议这样做。 boost-1.51 已经很老了。

标签: c++ visual-studio linker visual-studio-2017


【解决方案1】:

Boost 1.51 对于 VS2017 来说太旧了。它起源于 2012 年,从未编译或测试用于 VS2017。更新到最新的 boost 库 found here,然后完成您的正常构建过程。

【讨论】:

    猜你喜欢
    • 2012-10-14
    • 2013-05-15
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2018-04-07
    • 2014-04-23
    相关资源
    最近更新 更多