1

我第一次尝试构建 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。

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

非常感谢。

4

2 回答 2

8

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

您缺少的文件是libboost_date_time-vc110-mt-gd-1_53.lib,我们可以从命名约定中看到,它是使用调试运行时的多线程调试版本,用于 VC11(对您和我来说是 Visual C++ 2012)。有可能您根本没有构建特定版本的库 - 默认情况下,boost 执行最小构建,跳过多个版本的库。虽然这需要一些时间,但我发现在 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
于 2013-04-25T16:46:49.817 回答
1

更改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. 构建。 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 工具集=msvc-11.0 变体=调试,发布链接=共享运行时链接=共享地址模型=32

对于 64 位:

b2 工具集=msvc-11.0 变体=调试,发布链接=共享运行时链接=共享地址模型=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 工具集=msvc-11.0 变体=调试,发布链接=共享线程=多运行时链接=共享

于 2013-10-23T06:59:03.083 回答