Boost 1.53.0 - LNK1104构建VC++ 11时出错

use*_*336 1 c++ linker boost visual-studio-2012

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

在我的include目录中有C:....\boost_1_53_0,在链接器菜单上有我的附加依赖项C:...\boost_1_53_0\stage\lib.

我错过了什么文件链接,我在搜索文档后找不到它?

非常感谢.

ica*_*bod 8

尽管它是可爱的,并且声称它是一个仅限标题的集合,但是boost确实需要在库中构建一些部分才能使用它们.其中一个库是date_time.Boost是友好的,因为它会根据您的编译器选项在库中自动链接正确的.lib文件#include.需要注意的是,您需要先构建库.

您丢失的文件是libboost_date_time-vc110-mt-gd-1_53.lib我们从命名约定中可以看到的多线程调试版本,使用调试运行时,用于VC11(对您和我来说是Visual C++ 2012).您可能根本没有构建特定版本的库 - 默认情况下,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
Run Code Online (Sandbox Code Playgroud)

这需要一些时间,但它应该构建每个库的所有组合.例如,您可以在多核计算机上添加一些,-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
Run Code Online (Sandbox Code Playgroud)