2013-08-07 31 views

回答

4

我想你只需要使用的

#include <boost/interprocess/managed_shared_memory.hpp> 

代替boost/interprocess/windows_shared_memory.hpp。這將處理Windows和Linux。

-1

如果你看here,你會看到:

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

所以,是的,你需要將它移植到Linux上運行。

2

您不能在Linux平臺上使用特定於Windows的代碼,但要使用一點點的#ifdef __WIN32__//#else//#endif以及一些適當的typedef或類似的代碼,以便在Linux上使用標準(非Windows)共享內存體系結構。

您應該可以使用常規的共享內存架構,而不必對現有代碼進行修改或對其進行最小限度的修改。

比較: http://www.boost.org/doc/libs/1_54_0/doc/html/interprocess/sharedmemorybetweenprocesses.html 用(A節中的同一頁進一步下跌) http://www.boost.org/doc/libs/1_54_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.sharedmemory.windows_shared_memory