你好,以下是我的问题:
我正在尝试使用以下代码段创建共享内存段:
#include <boost/interprocess/managed_shared_memory.hpp>
using namespace boost::interprocess;
...
shared_memory_object::remove("MyShareMem");
try {
managed_shared_memory segment_(create_only,
"MyShareMem",
10 * 1024 * 1024);
...
}
catch (interprocess_exception &ex) {
std::cout << "Exception: "<< ex.what() << std::endl;
}
但是我遇到了一个异常:
Exception: boost::interprocess::intermodule_singleton初始化失败
我不知道该怎么做和如何解决这个问题。
有没有什么想法来处理这个问题?
更新:
我在这里找到了解决方案boost::interprocess_exception - library_error exception when creating shared_memory_object
这有点奇怪,因为boost依赖于Windows事件记录器。如果没有ID = 6005的事件,它就会抛出异常。
以下是来自boost 1.62.0 win32_api.hpp的代码片段
//Obtains the bootup time from the System Event Log,
//event ID == 6005 (event log started).
//Adapted from http://msdn.microsoft.com/en-us/library/windows/desktop/bb427356.aspx
inline bool get_last_bootup_time(std::string &stamp)
{
const char *source_name = "System";
const char *provider_name = "EventLog";
const unsigned short event_id = 6005u;
解决方法就是添加6005事件,所有工作都恢复正常。