【发布时间】: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