こんにちは、Linux で 1 つのプロジェクトをビルドする必要がありますが、「boost/interprocess/windows_shared_memory.hpp」を使用して Linux で実行する方法がありますか、それともこのコードを書き直す必要がありますか?
ありがとう
私はあなたがちょうど使用する必要があると思います
#include <boost/interprocess/managed_shared_memory.hpp>
の代わりにboost/interprocess/windows_shared_memory.hpp
。これにより、Windows と Linux の両方が処理されます。
Linux プラットフォームで Windows 固有のコードを使用することはできませんが、Linux で#ifdef __WIN32__//#else//#endif
標準の (Windows 以外の) 共有メモリ アーキテクチャを使用するために、少し適切な typedef などを使用します。
既存のコードをまったく、または最小限に変更するだけで、通常の共有メモリ アーキテクチャを使用できるはずです。
比較: http://www.boost.org/doc/libs/1_54_0/doc/html/interprocess/sharedmemory betweenprocesses.html (同じページのさらに下のセクション) http://www.boost.org/doc/ libs/1_54_0/doc/html/interprocess/sharedmemory betweenprocesses.html#interprocess.sharedmemory betweenprocesses.sharedmemory.windows_shared_memory
ここを見ると、次のように表示されます。
#if !defined(BOOST_INTERPROCESS_WINDOWS)
#error "This header can only be used in Windows operating systems"
#endif
したがって、はい、Linuxで実行するには移植する必要があります。