我有一个使用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 has defined”链接器错误。
有没有办法在我的静态库中为MongoDB使用Boost 1.42并在我的应用程序中使用Boost 1.48?
答案 0 :(得分:2)
您可以拆分构建过程:首先将MongDB C ++驱动程序编译为单独的.lib,同时链接Boost 1.42.0然后在第二步中编译您自己的应用程序,链接MongoDB库和Boost 1.48.0。只要MongDB .lib不公开任何boost函数(例如boost::system::throws
),这应该可以工作。有关如何限制公共接口暴露Boost符号,请参阅此question。
或者,尝试仅使用一个Boost版本(1.42或1.48)编译整个应用程序。