2016-09-14 68 views
0

我有一个外部C++代码基础我正在尝试构建需要BOOST。我有VS2015社区版,并试图从命令行构建。链接Windows C++项目以提升命令行体系结构类型问题

我下载并使用此命令内置升压:

.\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' 

我不知道这意味着我内置升压错误,需要使用不同的设置来重建或者如果我缺少我需要给有关建筑还是什么CL参数。我在一台Windows 10家庭64位机器上。我该如何解决?

回答

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

如果你打算建立x86,你会只需要配置升压到x86即可。就像我说的,这是MSVC的默认设置,它可以兼容。

+0

这工作,非常感谢你。你救了我的时间非常值得我为一个noob问题得到downvotes :) – asutherland