2

こんにちは、Linux で 1 つのプロジェクトをビルドする必要がありますが、「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 固有のコードを使用することはできませんが、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

于 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 に答える