我有一个使用 MongoDB C++ 驱动程序的项目。由于我使用的是 WinXP,所以我必须使用 MongoDB 2.0,它使用 Boost 1.42。 但是我的应用程序使用 Boost 1.48。
当我静态链接 MongoDB 驱动程序并构建应用程序时,出现 LNK1104 链接器错误,指出 libboost_system-vc100-md-gd-1_42.lib 丢失。 当我除了应用程序中所需的 1.48 库版本之外添加此库时,我收到 LNK2005“boost::system::throws 已定义”链接器错误。
有没有办法在我的 MongoDB 静态库中使用 Boost 1.42 并在我的应用程序中使用 Boost 1.48?
最佳答案
您可以拆分构建过程:首先将 MongDB C++ 驱动程序编译为单独的 .lib,同时链接到 Boost 1.42.0 然后在第二步中编译您自己的应用程序,链接到 MongoDB 库和 Boost 1.48.0。只要 MongDB .lib 不公开任何 boost 函数(例如 boost::system::throws ),此操作就应该有效。看这个question了解如何限制公共(public)接口(interface)暴露 Boost 符号。
或者,尝试仅使用单个 Boost 版本(1.42 或 1.48)编译整个应用程序。
关于c++ - 使用多个版本的 boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354620/