嗨,我需要在 linux 上构建一个项目,但它使用“boost/interprocess/windows_shared_memory.hpp”是在 linux 上运行它的任何方式,还是我必须重写这段代码?
谢谢
我想你只需要使用
#include <boost/interprocess/managed_shared_memory.hpp>
而不是boost/interprocess/windows_shared_memory.hpp
. 这将同时处理 Windows 和 Linux。
您不能为您的 Linux 平台使用特定于 windows 的代码,而是使用#ifdef __WIN32__//#else//#endif
一些合适的 typedef 或类似的代码来使用 Linux 上的标准(非 windows)共享内存架构。
您应该能够使用常规的共享内存架构,而无需对现有代码进行修改或修改最少。
比较: http: //www.boost.org/doc/libs/1_54_0/doc/html/interprocess/sharedmemorybetweenprocesses.html 与(同一页面下方的部分) http://www.boost.org/doc/ libs/1_54_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.sharedmemory.windows_shared_memory
如果你看这里,你会看到:
#if !defined(BOOST_INTERPROCESS_WINDOWS)
#error "This header can only be used in Windows operating systems"
#endif
所以,是的,你需要移植它才能在 linux 上运行。