将windows c++项目链接到boost命令行体系结构类型问题



我有一个外部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:UsersalexDocumentsboost_1_60_0" myproj_helper.cpp main.cpp /link /LIBPATH:"C:Boostlib" /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位计算机。我该如何解决这个问题?

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

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

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

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

    vcvarsall amd64

如果您打算构建x86,您只需要配置Boost来构建x86。就像我说的,这是默认的MSVC,这将使它兼容。

最新更新