2

嗨,我需要在 linux 上构建一个项目,但它使用“boost/interprocess/windows_shared_memory.hpp”是在 linux 上运行它的任何方式,还是我必须重写这段代码?

谢谢

4

3 回答 3

4

我想你只需要使用

 #include <boost/interprocess/managed_shared_memory.hpp>

而不是boost/interprocess/windows_shared_memory.hpp. 这将同时处理 Windows 和 Linux。

于 2013-08-07T12:22:52.040 回答
2

您不能为您的 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

于 2013-08-07T12:25:44.230 回答
-1

如果你看这里,你会看到:

#if !defined(BOOST_INTERPROCESS_WINDOWS)
#error "This header can only be used in Windows operating systems"
#endif

所以,是的,你需要移植它才能在 linux 上运行。

于 2013-08-07T12:24:41.047 回答