链接Windows C ++项目以增强命令行体系结构类型问题

时间:2016-09-14 03:51:20

标签: c++ boost visual-studio-2015

我有一个外部c ++代码库,我正在尝试构建,需要BOOST。我有VS2015社区版,我正在尝试从命令行构建。

我使用此命令下载并构建了boost:

.\b2 toolset=msvc-14.0 --build-type=complete --abbreviate-paths architecture=64 address-model=64 install -j4

然后我尝试像这样构建项目:

cl /EHsc -I "C:\Users\alex\Documents\boost_1_60_0" myproj_helper.cpp main.cpp /link /LIBPATH:"C:\Boost\lib" /out:program.exe

当我这样做时,我收到以下错误。

libboost_thread-vc140-mt-s-1_60.lib(thread.obj) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

我不确定这是否意味着我错误地构建了boost并且需要使用不同的设置重建,或者如果我错过了一个我需要给出关于架构或者什么的cl的参数。我在Windows 10家64位机器上。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您正在使用架构x64构建Boost,这很好,您想要什么。问题在于,您使用x86的默认架构构建项目,该架构在链接时与Boost冲突。使用this documentation,您可以在命令行中设置环境以使用x64体系结构。

  1. 将所需的MSVC版本的 VC 目录设置为工作目录。

    cd "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC"

  2. 运行这个神奇的批处理脚本(还有amd64_x86 ,默认amd64_arm

    vcvarsall amd64

  3. 如果您打算为x86构建,则只需将Boost配置为x86即可构建。就像我说的,这是MSVC的默认设置,它将使其兼容。