【问题标题】:Boost 1.53.0 - LNK1104 Error when building VC++11Boost 1.53.0 - 构建 VC++11 时出现 LNK1104 错误
【发布时间】:2013-04-25 01:18:46
【问题描述】:

我第一次尝试构建 boost v. 1.53 并收到以下错误消息:

错误 1 ​​错误 LNK1104: 无法打开文件 'libboost_date_time-vc110-mt-gd-1_53.lib' C:\Users\ryant_000\documents\visual studio 2012\Projects\Phase 2\Phase 2\LINK Phase 2

我的包含目录中有 C:....\boost_1_53_0 和 C:...\boost_1_53_0\stage\lib 我对链接器菜单的附加依赖项。

我在搜索文档后找不到要链接的文件是什么?

非常感谢。

【问题讨论】:

  • 可能有点多余的问题,但我想把这一点说得很清楚:您在构建 boost 库时遇到链接器错误?不是您的生产代码(使用 boost 库)?
  • 假设答案是肯定的:您是否检查过文件是否确实存在(在适当的目录中)?您是否按照 boost.org 上提供的构建说明进行操作?
  • 您在C:...\boost_1_53_0\stage\lib 中有libboost_date_time-vc110-mt-gd-1_53.lib 文件吗?

标签: c++ boost visual-studio-2012 linker


【解决方案1】:

尽管它很可爱,并且声称它是一个仅包含标题的集合,但 boost 确实有一些部分需要内置到库中以便您使用它们。这些库之一是date_time。 Boost 在某种意义上是友好的,它会根据您的编译器选项在您 #include 库时自动为您链接正确的 .lib 文件。需要注意的是,您需要先构建库。

您缺少的文件是libboost_date_time-vc110-mt-gd-1_53.lib,我们可以从naming convention 中看到,它是使用调试运行时的多线程调试版本,适用于VC11(对您和我来说是Visual C++ 2012)。有可能您根本没有构建特定版本的库 - boost 默认执行 minimal 构建,跳过多个版本的库。虽然这需要一些时间,但我发现在 boost 中构建所有东西是件好事......嘿,硬盘空间很便宜!

打开 Visual Studio 命令提示符,然后进入 boost 目录:

C:\> cd boost_1_53_0
C:\boost_1_53_0\> bootstrap.bat vc11
C:\boost_1_53_0\> .\b2 --build-type=complete toolset=vc11
... now go and make yourself a cup of tea

这需要一些时间,但它应该构建每个库的所有组合。您可以在多核机器上稍微加快它的速度,例如,将 -j4 添加到 .\b2 命令行,这将一次构建四个东西。

vc11 部分定义了要使用的工具集,如果您有两个编译器,这很方便 - 理论上它不应该是必需的(boost 可以很好地找到正确的工具集),但它没有确定伤害。

如果您想测试这是否是问题所在,那么您可以指定只构建缺少的 date_time 库的所有组合:

C:\boost_1_53_0\> .\b2 --build-type=complete toolset=vc11 --with-date_time
... now go and make yourself a cold drink, this won't take so long

【讨论】:

  • 非常感谢您的帮助 - 当我运行 C:\boost_1_53_0\> 时发现所以我只是在没有该工具集选项的情况下运行它,它成功了。
  • 你说得对,我想我选错了,它也应该在 bootstrap.bat 电话上 - 我会检查参数并更新答案。
  • @VinnieFalco:您是否尝试过如上所述构建 boost,但删除了“toolset=vc11”参数?它应该为您的环境选择正确的。
  • 我试过了,是的。问题是我已经安装了 VS2009、VS2010 和 VS2012。我想为 VS2010 和 VS2012 构建 boost,因为我有使用这两种 IDE 的项目。
  • @VinnieFalco:您需要执行上述操作两次,在这种情况下,每个环境一次。如果您可以从 Visual Studio 命令提示符中看到这两个版本,则需要在命令行上指定工具集:toolset=vc10 用于 VS2010,toolset=vc11 用于 VS2012。嘿,为什么不 toolset=VC9 用于 VS2008。我必须为我的系统执行此操作,我有 VS2008 和 VC10 附带的 Windows SDK。
【解决方案2】:

更改boost文件夹中以下文件的内容(下载并解压)

文件夹:boost_1_54_0\tools\build\v2\tools 文件:1.msvc.jam

内容已更改:

对于 32 位: toolset.flags msvc LINKFLAGS 控制台:/subsystem:console,5.01 ;

对于 64 位: toolset.flags msvc LINKFLAGS 控制台:/subsystem:console,5.02 ;

  1. msvc.pycontent 已更改:对于 32 位:toolset.flags('msvc', 'LINKFLAGS', ['console'], ['/subsystem:console,5.01'])

对于 64 位: toolset.flags('msvc', 'LINKFLAGS', ['console'], ['/subsystem:console,5.02']) 文件夹:boost_1_54_0\tools\build\v2\engine 文件:1. build.bat 内容已更改:对于 32 位/ 64 位:1. 完全修复 Visual Studio 路径,而不是“%ProgramFiles%-更改为 %ProgramFiles(x86)%

   2.   Add " /D _USING_V110_SDK71_ " to BOOST_JAM_CC =cl command before Skip_VC11Open vs2012 developer Command prompt and type the following commands

** 根据您的安装更新 7.1A SDK 路径

调用“%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat”

设置 INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%

设置 PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%

设置 LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%

引导

根据操作系统类型(32/64 位)选择命令

对于 32 位:

b2 toolset=msvc-11.0 variant=debug,release link=shared runtime-link=shared address-model=32

对于 64 位:

b2 toolset=msvc-11.0 variant=debug,release link=shared runtime-link=shared address-model=64

要为发布和调试版本编译任何示例,请遵循以下步骤:

打开 vs2012 开发者命令提示符并输入以下命令

调用“%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat”

设置 INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%

设置 PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%

设置 LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%

转到示例目录:例如:boost_1_54_0\libs\test\tools\console_test_runner

输入以下命令

\boost_1_54_0\bjam.exe --v2 toolset=msvc-11.0 variant=debug,release link=shared threading=multi runtime-link=shared

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2023-03-25
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多