2016-09-14 67 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