[interprocess] managed_mapped_file under cygwin
From what I've read, cygwin supports mmap, and so I figured there was a chance that boost::interprocess::managed_mapped_file was valid on windows when compiling with cygwin.
I've built the boost libraries using cygwin with boost_1_39_0, using a user-config.bjam with: using gcc : cygwin_4.3.2 : /usr/bin/g++-4 : <compileflags>-DBOOST_POSIX_API <compileflags>-DBOOST_POSIX_PATH ; Under cygwin, I have g++ 3.4.4 g++-4 4.3.2 I think you can reproduce this with a source file that just includes <boost/interprocess/managed_mapped_file.hpp> I'm getting the following compile error: g++-4 -DHAS_STDINT_H -I/cygdrive/c/workspaces/cdds_head/stldb_lib -I/cygdrive/c/c++/boost_1_39_0 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"database.d" -MT"database.d" -o"database.o" "../database.cpp" (I also get this with g++) In file included from C:\C++\boost_1_39_0/boost/interprocess/detail/managed_open_or_create_impl.hpp:17, from C:\C++\boost_1_39_0/boost/interprocess/managed_mapped_file.hpp:20, from C:\workspaces\cdds_head\stldb_lib/stldb/containers/trans_map.h:23, from ../trans_map.h:18, from ../database.h:13, from ../database.cpp:8: C:\C++\boost_1_39_0/boost/interprocess/mapped_region.hpp: In constructor 'boost::interprocess::mapped_region::mapped_region(const MemoryMappable&, boost::interprocess::mode_t, boost::interprocess::offset_t, size_t, const void*)': C:\C++\boost_1_39_0/boost/interprocess/mapped_region.hpp:403: error: request for member 'is_xsi' in 'map_hnd', which is of non-class type 'boost::interprocess::mapping_handle_t' C:\C++\boost_1_39_0/boost/interprocess/mapped_region.hpp:406: error: request for member 'handle' in 'map_hnd', which is of non-class type 'boost::interprocess::mapping_handle_t' The above suggests that in detail/os_file_functions.hpp, mapping_handle_t is being given the windows definition rather than the posix definition, somehow. However, I've also noticed that if I #include <boost/interprocess/windows_shared_memory.hpp>, I do trip the #error caused by !defined(BOOST_INTERPROCESS_WINDOWS), so that proves that it isn't, in which case I don't quite understand where this error is coming from. Any help is appreciated. Thanks, - Bob Walters
participants (1)
-
Bob Walters