2

MongoDB C++ ドライバーを使用するプロジェクトがあります。私は WinXP を使用しているため、Boost 1.42 を使用する MongoDB 2.0 を使用する必要があります。ただし、私のアプリケーションは Boost 1.48 を使用しています。

MongoDB ドライバーを静的にリンクしてアプリケーションをビルドすると、libboost_system-vc100-md-gd-1_42.lib が見つからないという LNK1104 リンカー エラーが発生します。アプリに必要な 1.48 ライブラリ バージョンに加えてこのライブラリを追加すると、LNK2005 "boost::system::throws already defined" リンカー エラーが発生します。

MongoDB の静的ライブラリで Boost 1.42 を使用し、アプリケーションで Boost 1.48 を使用する方法はありますか?

4

1 に答える 1

2

ビルド プロセスを分割できます。まず、Boost 1.42.0 にリンクしながら、MongDB C++ ドライバーを別の .lib にコンパイルします。次に、2 番目のステップで、MongoDB ライブラリと Boost 1.48.0 にリンクして、独自のアプリケーションをコンパイルします。これは、MongDB .lib がboost::system::throws. パブリック インターフェイスが Boost シンボルを公開しないように制限する方法については、この質問を参照してください。

または、1 つの Boost バージョン (1.42 または 1.48) のみでアプリケーション全体をコンパイルしてみてください。

于 2013-05-03T08:59:23.133 に答える