【发布时间】:2013-05-08 15:00:07
【问题描述】:
当我尝试在 C++ Builder 中包含 <boost/thread.hpp> 时收到警告。对于我包含的每个单元,C++ Builder 都会显示以下两行:
thread_heap_alloc.hpp(59): W8128 Can't import a function being defined
thread_heap_alloc.hpp(69): W8128 Can't import a function being defined
已经尝试了一些东西,但没有任何效果。
它编译正确,但是让我很紧张。为什么会显示此消息?
这些行是:
#include <boost/config/abi_prefix.hpp>
namespace boost
{
namespace detail
{
inline BOOST_THREAD_DECL void* allocate_raw_heap_memory(unsigned size)
{
void* const eap_memory=detail::win32::HeapAlloc(detail::win32::GetProcessHeap(),0,size);
if(!heap_memory)
{
throw std::bad_alloc();
}
return heap_memory;
}
inline BOOST_THREAD_DECL void free_raw_heap_memory(void* heap_memory)
{
BOOST_VERIFY(detail::win32::HeapFree(detail::win32::GetProcessHeap(),0,heap_memory)!=0);
}
其中 59 是 BOOST_THREAD_DECL 下方的 {,69 也是如此。看起来 BOOST_THREAD_DECL 未正确定义或定义错误,尝试遵循 Boost 代码并不容易。
这是 Boost 1.39。
【问题讨论】:
-
您使用什么版本的 Boost?您在
thread_heap_alloc.hpp的上述行中看到了什么? -
我正在使用 XE4。这是发生错误的文件:xup.in/dl,47109567/thread_heap_alloc.txt
-
如果你使用 Boost 1.53 会怎样? 1.39 发布 4 年 7 天前...
-
感谢提示,一定要试试。虽然 Embarcadero 提供了 1.39 的预装..
-
@KennyTM 1.53 不是 Embarcadero 的 32 位编译器的选项,只有 64 位。我们被困在 1.39
标签: c++ boost c++builder