c++ - 使用多个版本的 boost

标签 c++ mongodb visual-c++ boost linker-errors

我有一个使用 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/

相关文章:

c++ - 初始化指针数组

mongodb - Mongo Hadoop 连接器支持聚合吗?

java - 使用 hadoop reducer 在将批量写入操作写入 mongodb 时检查重复记录

c++ - 问题 : How to convert CString into const char * in C++ MFC

Visual Studio 2013 中的 C++ - <Class> 未定义

c - 如何使用 gettimeofday() 或与 Visual Studio C++ 2008 等效的东西?

c++ - 非静态数据成员类推导

c++ - 指向抽象类的指针

c++ - 你如何在 ubuntu 上编译 taglib?

javascript - 具有不同值的 Mongodb 多更新