C++ 使用Boost在共享内存中创建循环缓冲区时出现问题
我试图使用BoostC++ 使用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
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