x64 上 Boost 1.53 和 VS 2013 的链接器错误

Linker error with Boost 1.53 and VS 2013 on x64

我已经在 SO 和其他一些地方发现了这个问题,它总是与 linking x64 构建上的 32 位库有关,反之亦然,例如:Boost linker error: Unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_system_category(void)"

1>base_pcount.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAAEBVerror_category@12@XZ)
1>base_pcount.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAAEBVerror_category@12@XZ)

但我 99% 确定我正在 link 构建 x64。

所以在这一点上,boost 实际上不是为 x64 构建的,或者我的程序不是为 x64 构建的。任何想法这里可能出了什么问题? 不幸的是,也没有人为 vs 2013 提供预编译的二进制文件,所以我完全被卡住了。

编辑:我 "solved" 通过升级到 boost 1.57 并使用新版本提供的预编译二进制文件来做到这一点。似乎 boost 1.53 从未打算与 2013 一起使用。

有点晚了,但我没有早点看到你的问题。

您需要删除 address-model=64 前面的 - - 这是 属性,不是一个选项。所以我认为你毕竟不是为 64 位构建的,因为 -address-model=64 被认为是一个(可能无效的)选项。