c – Boost编译器错误?
我正在尝试构建此程序:
#include "stdafx.h" #include <boost/interprocess/shared_memory_object.hpp> #include <boost/interprocess/file_mapping.hpp> #include <boost/interprocess/mapped_region.hpp> using namespace std; int main() { using boost::interprocess; // Create the file mapping file_mapping fm("input.dat",read_only); // Map the file in memory mapped_region region(fm,read_only); // Get the address where the file has been mapped float * addr = (float *)region.get_address(); std::size_t elements = region.get_size() / sizeof(float); } 但我有两个问题,因为我得到的主要问题: 1>tasker.cpp(98): error C2873: 'boost::interprocess' : symbol cannot be used in a using-declaration 1>tasker.cpp(101): error C2065: 'file_mapping' : undeclared identifier 1>tasker.cpp(101): error C2146: syntax error : missing ';' before identifier 'fm' 1>tasker.cpp(101): error C2065: 'read_only' : undeclared identifier 1>tasker.cpp(101): error C3861: 'fm': identifier not found 1>tasker.cpp(103): error C2065: 'mapped_region' : undeclared identifier 1>tasker.cpp(103): error C2146: syntax error : missing ';' before identifier 'region' 1>tasker.cpp(103): error C2065: 'fm' : undeclared identifier 1>tasker.cpp(103): error C2065: 'read_only' : undeclared identifier 1>tasker.cpp(103): error C3861: 'region': identifier not found 1>tasker.cpp(105): error C2065: 'region' : undeclared identifier 1>tasker.cpp(105): error C2228: left of '.get_address' must have class/struct/union 1> type is 'unknown-type' 1>tasker.cpp(106): error C2065: 'region' : undeclared identifier 1>tasker.cpp(106): error C2228: left of '.get_size' must have class/struct/union 1> type is 'unknown-type' 并为#include< boost / interprocess / mapped_region.hpp>我正进入(状态 1>C:UsersMikeDocumentsboost_1_55_0boost/intrusive/detail/has_member_function_callable_with.hpp(200): error C2228: left of '.select_on_container_copy_construction' must have class/struct/union 1> type is 'boost::move_detail::add_rvalue_reference<U>::type' 1> C:UsersMikeDocumentsboost_1_55_0boost/intrusive/detail/has_member_function_callable_with.hpp(276) : see reference to class template instantiation 'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction_impl<Fun,true,>' being compiled 1> with 1> [ 1> Fun=std::allocator<std::pair<const boost::interprocess::ipcdetail::sync_id *const,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const boost::interprocess::ipcdetail::sync_id,void *>>>>> 1> ] 1> C:UsersMikeDocumentsboost_1_55_0boost/container/allocator_traits.hpp(262) : see reference to class template instantiation 'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction<const Alloc,>' being compiled 1> with 1> [ 1> Alloc=std::allocator<std::pair<const boost::interprocess::ipcdetail::sync_id *const,void *>>>>> 1> ] 1> C:UsersMikeDocumentsboost_1_55_0boost/container/detail/tree.hpp(217) : see reference to class template instantiation 'boost::container::allocator_traits<A>' being compiled 1> with 1> [ 1> A=std::allocator<std::pair<const boost::interprocess::ipcdetail::sync_id *const,void *>>>>> 1> ] 1> C:UsersMikeDocumentsboost_1_55_0boost/container/detail/tree.hpp(246) : see reference to class template instantiation 'boost::container::container_detail::intrusive_rbtree_type<A,boost::container::container_detail::tree_value_compare<Key,std::pair<const Key,T>,Compare,boost::container::container_detail::select1st<std::pair<const Key,T>>>>' being compiled 1> with 1> [ 1> A=std::allocator<std::pair<const boost::interprocess::ipcdetail::sync_id *const,void *>>>>> 1>,Key=const boost::interprocess::ipcdetail::sync_id * 1>,T=boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const boost::interprocess::ipcdetail::sync_id,void *>>> 1>,Compare=boost::interprocess::ipcdetail::sync_handles::address_less 1> ] 1> C:UsersMikeDocumentsboost_1_55_0boost/container/map.hpp(83) : see reference to class template instantiation 'boost::container::container_detail::rbtree<Key,T>>,Allocator>' being compiled 1> with 1> [ 1> Key=const boost::interprocess::ipcdetail::sync_id * 1>,Compare=boost::interprocess::ipcdetail::sync_handles::address_less 1>,Allocator=std::allocator<std::pair<const boost::interprocess::ipcdetail::sync_id *const,void *>>>>> 1> ] 1> C:UsersMikeDocumentsboost_1_55_0boost/interprocess/sync/windows/sync_utils.hpp(226) : see reference to class template instantiation 'boost::container::map<const boost::interprocess::ipcdetail::sync_id *,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<T>>,boost::interprocess::ipcdetail::sync_handles::address_less,std::allocator<std::pair<const Key,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<T>>>>>' being compiled 1> with 1> [ 1> T=std::pair<const boost::interprocess::ipcdetail::sync_id,void *> 1>,Key=const boost::interprocess::ipcdetail::sync_id * 1> ] 我正在使用Visual Studio Express 2013 for Windows Desktop,并提升1.55.0. 我尝试了其他的boost库并且没有任何问题….而且,我正在使用x64版本构建. 解决方法
Boost 1.55尚未完全支持Visual Studio 2013编译器.
或者: >使用Visual Studio 2012工具链 编辑 刚检查了boost-trunk,已经修补了boost / intrusive / detail / has_member_function_callable_with.hpp,它与vs2013和vs2013-nov-2013-ctp工具链编译得很好.所以,试试吧.而且,如果您有多个boost版本,请不要忘记像我一样更改包含路径(在Makefile或VC项目属性中). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |