1

boost::recursive_mutexC++ Builder 2010でboost_thread-bcb-mt-1_39.dllboost::lock_guardを使用しているようです。静的バージョン-boost_thread-bcb-mt-1_39.libもあります。

私のコードは次のようなものです:

boost::recursive_mutex mylock;
//...
boost::lock_guard<boost::recursive_mutex> lock(mylock);

ただし、コンパイル オプションをReleaseに設定し、Dynamic RTL オプションをFalseに設定すると、dll ブースト ライブラリと静的ランタイムを混在させることは本当に悪い考えです... . Dynamic RTL をTrueに戻すとコンパイルが行われますが、追加の DLL ( cc32100mt.dllおよびboost_thread-bcb-mt-1_39.dll ) が必要です。

単一のexeで静的にコンパイルする方法はありますか? やはり、LIBファイルが提供されているので、できるはずです。このバージョンの C++ Builder または Boost に問題がありますか?

4

1 に答える 1

1

私が必要としたのは、ヘッダーファイルで定義することでした:

#define BOOST_THREAD_USE_LIB

直前:

#include <boost/thread/recursive_mutex.hpp>
#include <boost/thread/locks.hpp>

その後、問題なくコンパイルされます。

于 2012-12-17T10:21:10.473 に答える