c++ - 链接 Windows C++ 项目以 boost 命令行体系结构类型问题

标签 c++ boost visual-studio-2015

我有一个外部 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 并且需要使用不同的设置进行重建,或者我是否缺少我需要提供有关架构或其他内容的参数。我在 Windows 10 家用 64 位机器上。我该如何解决这个问题?

最佳答案

您正在使用 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 构建,您只需配置 Boost 以构建为 x86。正如我所说,这是 MSVC 的默认设置,这将使其兼容。

关于c++ - 链接 Windows C++ 项目以 boost 命令行体系结构类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39482224/

相关文章:

visual-studio-2015 - 如何更新 Visual Studio 的 NPM?

c++ - 指向基类子对象的指针。调用了哪个版本的虚函数?

c++ - 新手的C++项目

c++ - 中断分离的 boost::thread

c++ - Boost dijkstra shortest_path - 如何获得最短路径而不仅仅是距离?

c++ - 锁定已在其他线程中锁定的 boost::unique_lock 时抛出异常

python - 尝试通过 pip 安装 MySQL-python 时找不到 Visual C++ 2010 Redistributable

c++ - 使用自定义比较器定义映射,其中值数据结构也具有自定义比较器

c++ - 使用 Win32 应用程序在 Windows 7 中禁用 CONTROL + ALT + DELETE 和 Windows(win) 键

c++ - 第二个参数在命令行参数中不起作用