
Thanks for the message. But I still believe at least some of these should be fixable. For example, the first one: <---- error message begin ----> msvc.compile.c++ bin\msvc\debug\threading-multi\allocate_resources.obj allocate_resources.cpp C:\boost_1_33_1\boost\filesystem\operations.hpp(56) : error C2955: 'boost::equivalent' : use of class template requires template argument list C:\boost_1_33_1\boost\operators.hpp(820) : see declaration of 'boost::equivalent' call "C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin\vcvars32.bat" > nul cl /Zm800 -nologo -TP /Z7 /Od /Ob0 /GR /MDd /wd4675 /EHs /Zc:forScope /Zc:wchar_t @"bin\msvc\debug\threading-multi\allocate_resources.obj.rsp" -c -Fo"bin\msvc\debug\threading-multi\allocate_resources.obj" && del /f "bin\msvc\debug\threading-multi\allocate_resources.obj.rsp" <---- error message end ----> If I look at C:\boost_1_33_1\boost\filesystem\operations.hpp, line 56, it defines BOOST_OPERATOR_TEMPLATE(equivalent) But in C:\boost_1_33_1\boost\operators.hpp, line 820 BOOST_FILESYSTEM_DECL bool equivalent( const path & ph1, const path & ph2 ); So there are 2 equivalent, one defined in boost::filesystem, and one in global as a macro. The allocate_resources.cpp does invoke any 'equivalent', it is just simple header conflict, either in libtorrent's declaration, or within boost. If I comments out line 56 in boost/operators.hpp for the "BOOST_OPERATOR_TEMPLATE(equivalent)", then all the related error disappear. The question is if it is the right thing to do. Well, I am really new to boost and libtorrent, and really have no feeling about this at all. With regard to the boost:bind problem, I am not sure what happened. BTW, anyone knows the equalivalent form for the following nested bind: struct peer { enum connection_type { not_connectable,connectable }; peer(const address& ip, connection_type t); ... peer_connection* connection; }; std::vector<peer> m_peers; peer_connection& c; assert(std::find_if(m_peers.begin(), m_peers.end() , boost::bind(std::equal_to<peer_connection*>(), boost::bind(&peer::connection, _1) , &c)) != m_peers.end()); I am trying to invoke the predicate std:equal_to() directly, therefore remove the first boost::bind().. Best regards, Allen Zhao John Maddock wrote:
Is there any successful story that you can share with me with regards to VC 7.0 compilation? Any pointers are welcome. The errors I have seem so far at enclosed at the end. The libtorrent only depends on boost:filesystem, boost:date_time and boost::thread.
Looking at the error messages it appears that libtorrent depends on lambda, operators, bind and possibly other Boost libraries as well. At least one of those (lambda) is *very unlikely* to work with VC 7.0. So my guess is that libtorrent needs VC 7.1 or later, but that's really a question for it's authors.
HTH John.
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users