我已经多次构建了 x86 Boost 库,但我似乎无法构建 x64 库。我启动“Visual Studio 2005 x64 Cross Tools 命令提示符”并运行我通常的构建:
bjam --toolset=msvc --build-type=complete --build-dir=c:\build install
但它仍然会生成 x86 .lib 文件(我用 dumpbin /headers 验证了这一点)。我究竟做错了什么?
我已经多次构建了 x86 Boost 库,但我似乎无法构建 x64 库。我启动“Visual Studio 2005 x64 Cross Tools 命令提示符”并运行我通常的构建:
bjam --toolset=msvc --build-type=complete --build-dir=c:\build install
但它仍然会生成 x86 .lib 文件(我用 dumpbin /headers 验证了这一点)。我究竟做错了什么?
您需要添加address-model=64
参数。
看例如这里。
接受的答案是正确的。添加这个以防其他人用谷歌搜索这个答案但仍然无法生成 x64 版本。
以下是我在 Visual Studio 15 2017 社区版上构建 Boost 1.63 所必须做的。
从 VS 环境 cmd shell 执行的命令。工具 -> Visual Studio 命令提示符
C:\Work\Boost_1_63> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat amd64
C:\Work\Boost_1_63> bootstrap.bat
C:\Work\Boost_1_63> bjam -j4 architecture=x86 address-model=64 link=static stage
C:\Work\Boost_1_63> bjam --prefix=C:\opt\boost architecture=x86 address-model=64 link=static install
您可以使用 dumpbin 验证生成的 .lib 是否为 x64:
C:\Work> dumpbin /headers C:\work\boost_1_63\stage\lib\libboost_locale-vc140-mt-1_63.lib | findstr machine
8664 machine (x64)
8664 machine (x64)
8664 machine (x64)
8664 machine (x64)
...
使用 b2 命令是:
b2 --build-dir=build/x64 address-model=64 threading=multi --build-type=complete --stagedir=./stage/x64
它会default address-model: 32-bit
在开始时显示,但仍会以 64 位构建(多么令人困惑)。您应该使用名称创建 dll,例如library-vc140-mt-x64-1_71.dll
确认它是 64 位。
您可能会发现以下Boost.Build 属性:
address-model=64