2

我有一个使用 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 already defined”链接器错误。

有没有办法在我的 MongoDB 静态库中使用 Boost 1.42 并在我的应用程序中使用 Boost 1.48?

4

1 回答 1

2

您可以拆分构建过程:首先将 MongDB C++ 驱动程序编译到单独的 .lib 中,同时链接到 Boost 1.42.0 然后在第二步中编译您自己的应用程序,链接到 MongoDB 库和 Boost 1.48.0。只要 MongDB .lib 不公开任何增强功能,例如boost::system::throws. 有关如何限制公共接口公开 Boost 符号的信息,请参阅此问题。

或者,尝试仅使用一个 Boost 版本(1.42 或 1.48)编译整个应用程序。

于 2013-05-03T08:59:23.133 回答