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.
我错过了什么文件链接,我在搜索文档后找不到它?
非常感谢.
尽管它是可爱的,并且声称它是一个仅限标题的集合,但是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)