我有一个外部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
体系结构。
-
设置所需MSVC版本的VC目录作为工作目录。
cd "C:Program Files (x86)Microsoft Visual Studio 14.0VC"
-
运行这个神奇的批处理脚本(也有
amd64_x86
这是默认的和amd64_arm
)vcvarsall amd64
如果您打算构建x86
,您只需要配置Boost来构建x86
。就像我说的,这是默认的MSVC,这将使它兼容。