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

时间:2013-04-25 01:18:47

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

我正在尝试第一次构建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对链接器菜单上的其他依赖项。

我缺少哪些文件链接,我在搜索文档后找不到它?

非常感谢。

2 个答案:

答案 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;

  1. msvc.pycontent已更改:对于32位:toolset.flags('msvc','LINKFLAGS',['console'],['/ subsystem:console5.01'])
  2. 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