我有一个外部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位机器上。我该如何解决这个问题?
答案 0 :(得分:1)
您正在使用架构x64
构建Boost,这很好,您想要什么。问题在于,您使用x86
的默认架构构建项目,该架构在链接时与Boost冲突。使用this documentation,您可以在命令行中设置环境以使用x64
体系结构。
将所需的MSVC版本的 VC 目录设置为工作目录。
cd "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC"
运行这个神奇的批处理脚本(还有amd64_x86
,默认,amd64_arm
)
vcvarsall amd64
如果您打算为x86
构建,则只需将Boost配置为x86
即可构建。就像我说的,这是MSVC的默认设置,它将使其兼容。