我正在尝试第一次构建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对链接器菜单上的其他依赖项。
我缺少哪些文件链接,我在搜索文档后找不到它?
非常感谢。
答案 0 :(得分:8)
尽管它是可爱的并且声称它是一个仅限标题的集合,但是boost确实需要在库中构建一些部分才能使用它们。其中一个库是date_time
。 Boost是友好的,因为它会根据您的编译器选项在您.lib
库时自动为您链接正确的#include
文件。需要注意的是,您需要先构建库。
您缺少的文件是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
答案 1 :(得分: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;
64位: toolset.flags('msvc','LINKFLAGS',['console'],['/ sububystem:console5.02'])Folder: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%
转到示例目录:ex: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