C++ 使用Boost在共享内存中创建循环缓冲区时出现问题

C++ 使用Boost在共享内存中创建循环缓冲区时出现问题,c++,boost-interprocess,circular-buffer,C++,Boost Interprocess,Circular Buffer,我试图使用Boostcircular\u buffer和进程间库在共享内存中创建一个循环缓冲区。我编译并运行了中给出的在共享内存中创建向量的示例,没有问题。但是,当我将其修改为使用Boost circular_缓冲区时: int main(int argc, char *argv[]) { managed_shared_memory segment(create_only, "MySharedMemory", 65536); const ShmemAlloca

我试图使用Boost
circular\u buffer
和进程间库在共享内存中创建一个循环缓冲区。我编译并运行了中给出的在共享内存中创建向量的示例,没有问题。但是,当我将其修改为使用Boost circular_缓冲区时:

int main(int argc, char *argv[])
{
    managed_shared_memory segment(create_only, "MySharedMemory", 65536);
    const ShmemAllocator alloc_inst (segment.get_segment_manager());
    MyCircBuffer  *myCircBuf  = segment.construct<MyCircBuffer>("MyCircBuffer")(alloc_inst);
    return 0;
} 
intmain(intargc,char*argv[])
{
托管共享内存段(仅创建“MySharedMemory”,65536);
const ShmemAllocator alloc_inst(段.get_段管理器());
MyCircBuffer*myCircBuf=segment.construct(“MyCircBuffer”)(alloc_inst);
返回0;
} 
我得到一个编译错误(由
段.construct()
引起)。知道我做错了什么吗?这是因为
循环缓冲区
不是
/boost/interprocess/containers
中列出的容器之一,即它与interprocess不兼容吗

谢谢


C

我在boost用户论坛上问了同样的问题,建议的解决方案是使用-DBOOST\u CB\u DISABLE\u DEBUG或-DNDEBUG标志,因为
circular\u buffer
依赖原始指针进行调试支持


还有其他建议吗?

您能提供编译错误消息吗?请发布错误列表和编译器…抱歉没有提供所有详细信息。我得到的错误是/usr/local/include/boost/circular\u buffer/base。hpp:2127:错误:无法将参数“1”的“boost::interprocess::offset\u ptr”转换为“void*”,而将“void*memset(void*,int,size\t)”转换为“void*”。我在MAc OS X上使用的是gcc v4.2.1