1

boost::recursive_mutex并且boost::lock_guard似乎在 C++ Builder 2010 中使用boost_thread-bcb-mt-1_39.dll。我看到还有静态版本 - boost_thread-bcb-mt-1_39.lib

我的代码是这样的:

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

但是,如果我将编译选项设置为Release并将 Dynamic RTL 选项设置为False ,我得到的只是将 dll boost 库与静态运行时混合是一个非常糟糕的主意...。将动态 RTL 恢复为True可以编译,但它需要额外的 DLL - cc32100mt.dllboost_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 回答