【发布时间】:2021-11-17 19:42:30
【问题描述】:
我正在 Windows 上构建一个 64 位程序,需要链接到 Boost 库。
我正在成功使用其他 64 位库。
当我构建 boost 时,我使用命令明确指定我需要 64 位库
`.\b2 address-model=64'
它构建了我需要的库:
`libboost-serialization-vc120-mt-s-x64_1_77.lib'
顾名思义,这应该是一个 64 位库。
但是,当我尝试编译我的程序时,我得到了链接错误:
说明: `error LINK1112: 模块机器类型“X86”与目标机器类型“x64”冲突
文件: `libboost-serialization-vc120-mt-s-x64_1_77.lib'
这是怎么回事 - 它是一个 64 位库,为什么它说它与机器类型“x64”冲突,我该怎么办?
【问题讨论】:
-
您是在 32 位配置下编译自己的项目吗?
-
不,64 位,已确认(我正在链接到在尝试链接到此之前构建的其他 64 位库),机器类型 'x64' 是 my 程序。我发现一个问题指的是同样的现象:stackoverflow.com/questions/56603575/… 似乎问题在于 boost 构建系统说它是 64 位,但实际上是 32 位。但我看不到一个可靠的答案或我可以复制的答案......
-
您可以使用 dumpbin(在您的 VS 2013 二进制文件中提供)来验证该库是否为 64 位,如此答案:https://superuser.com/a/1658663/76204
标签: c++ boost linker linker-errors