boost::recursive_mutex
а также boost::lock_guard
похоже использовать boost_thread-BCB-мт-1_39.dll в C ++ Builder 2010. Я вижу, что есть также статическая версия — boost_thread-BCB-мт-1_39.lib.
Мой код примерно такой:
boost::recursive_mutex mylock;
//...
boost::lock_guard<boost::recursive_mutex> lock(mylock);
Однако, если я установлю опцию компиляции в Релиз и установите параметр динамического RTL в Ложь все, что я получаю, это Смешивать библиотеку dll boost со статической средой выполнения — действительно плохая идея …. Возвращение динамического RTL к Правда компилируется, но тогда ему нужны дополнительные DLL — cc32100mt.dll а также boost_thread-BCB-мт-1_39.dll.
Есть ли способ компилировать его статически в одном exe? Ведь файл LIB предоставлен, это должно быть возможно. Это проблема с этой версией C ++ Builder или Boost?
Что мне нужно было определить в заголовочном файле:
#define BOOST_THREAD_USE_LIB
прямо перед:
#include <boost/thread/recursive_mutex.hpp>
#include <boost/thread/locks.hpp>
После этого он компилируется без проблем.
Других решений пока нет …