Hello:

Since there are currently not any native Windows binaries publicly 
available for Ledger 3.0, and it seems that an official release is 
impending, I decided to make a stab at creating a Windows binary for the 
world to share.  Up to now, I've been using a Cygwin build, but that's 
going to be pretty inconvenient for most Windows users.

After six hours of work, it is evident that Windows is not really a 
friendly platform for open-source development.  But I think I've made some 
progress today, and maybe just a little more work will get the job done.

I have Visual Studio 2012, and no other older versions, so that's what I 
used to build all of ledger's dependencies, and eventually ledger itself.

There were quite a few dependencies to take care of, each of which has to 
be obtained by ad-hoc methods because Windows users can't have modern 
package management.  CMake and Python were relatively easy to take care 
of.  I had to build Boost from scratch, because there are no pre-built 
binaries for VC11.  I built Boost 1.46.1, because that's what the ledger 
CMakeLists.txt specifies, but I also downloaded and built the latest 1.53.0 
while I was at it.

By far the most troublesome dependencies were GMP and MPFR.  If it hadn't 
been for http://gladman.plushost.co.uk/oldsite/computing/gmp4win.php, I 
would have been defeated.  But that web page had enough hints to get me 
going.  There is no Windows build support for GMP, but there is a forked 
library called MPIR that is a drop-in GMP replacement.  Both GMP and MPFR 
use non-standard build tools, and they both have other quirky build 
requirements (manually laying a Microsoft build structure over a Unix 
source tree, and manually re-arranging the source tree after the fact).  
Anyway, I eventually got them built, and did the necessary work to convince 
CMake that they existed.

Eventually, I successfully finished the generation step (cmake -G "Visual 
Studio 11" completed with plenty of warnings but no errors.)  This produced 
a number of .vcxproj files, which I then opened in Visual Studio 2012.

Now I'm stuck.  When I try to build libledger, I get lots of boost-related 
error messages.  I tried repeating the build using boost 1.53 instead of 
1.46.1, but I still get the same errors.  If someone can help me resolve 
those errors, I think I might have a Windows binary ready soon.

I've attached a file with the error output for one file, account.cc.

Thanks for any help that a boost expert can provide,
Tim Crews





-- 

--- 
You received this message because you are subscribed to the Google Groups 
"Ledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


account.cc
2>f:\opensourceprojects\ledger\src\account.h(131): error C2668: 'boost::bind' : 
ambiguous call to overloaded function
2>          
F:/Downloads/DevelopmentTools/BoostWithBinaries/boost_1_53_0\boost/bind/bind.hpp(1728):
 could be 'boost::_bi::bind_t<R,F,L> 
boost::bind<boost::arg<I>,_Ty2,std::pair<_Ty1,_Ty2>>(M std::pair<_Ty1,_Ty2>::* 
,A1)'
2>          with
2>          [
2>              R=ledger::account_t *const &,
2>              F=boost::_mfi::dm<ledger::account_t *,std::pair<const 
ledger::string,ledger::account_t *>>,
2>              L=boost::_bi::list1<boost::arg<1>>,
2>              I=1,
2>              _Ty2=ledger::account_t *,
2>              _Ty1=const ledger::string,
2>              M=ledger::account_t *,
2>              A1=boost::arg<1>
2>          ]
2>          C:\Program Files (x86)\Microsoft Visual Studio 
11.0\VC\include\functional(1290): or       
'std::_Bind<_Forced,_Ret,_Fun,_V0_t,_V1_t,_V2_t,_V3_t,_V4_t,_V5_t,<unnamed-symbol>>
 std::bind<_Ty2,std::pair<_Ty1,_Ty2>,boost::arg<I>&>(_Rx 
std::pair<_Ty1,_Ty2>::* const ,_Arg0)' [found using argument-dependent lookup]
2>          with
2>          [
2>              _Forced=false,
2>              _Ret=void,
2>              _Fun=std::_Pmd_wrap<ledger::account_t *std::pair<const 
ledger::string,ledger::account_t *>::* ,ledger::account_t *,std::pair<const 
ledger::string,ledger::account_t *>>,
2>              _V0_t=boost::arg<1> &,
2>              _V1_t=std::_Nil,
2>              _V2_t=std::_Nil,
2>              _V3_t=std::_Nil,
2>              _V4_t=std::_Nil,
2>              _V5_t=std::_Nil,
2>              <unnamed-symbol>=std::_Nil,
2>              _Ty2=ledger::account_t *,
2>              _Ty1=const ledger::string,
2>              I=1,
2>              _Rx=ledger::account_t *,
2>              _Arg0=boost::arg<1> &
2>          ]
2>          while trying to match the argument list '(ledger::account_t 
std::pair<_Ty1,_Ty2>::* , boost::arg<I>)'
2>          with
2>          [
2>              _Ty1=const ledger::string,
2>              _Ty2=ledger::account_t *
2>          ]
2>          and
2>          [
2>              I=1
2>          ]
2>f:\opensourceprojects\ledger\src\account.h(131): error C2780: 
'iterators::enable_if<boost::is_class<T>,boost::transform_iterator<UnaryFunc,Iterator>>::type
 boost::make_transform_iterator(Iterator)' : expects 1 arguments - 2 provided
2>          
F:/Downloads/DevelopmentTools/BoostWithBinaries/boost_1_53_0\boost/iterator/transform_iterator.hpp(154)
 : see declaration of 'boost::make_transform_iterator'
2>f:\opensourceprojects\ledger\src\account.h(135): error C2668: 'boost::bind' : 
ambiguous call to overloaded function
2>          
F:/Downloads/DevelopmentTools/BoostWithBinaries/boost_1_53_0\boost/bind/bind.hpp(1728):
 could be 'boost::_bi::bind_t<R,F,L> 
boost::bind<boost::arg<I>,_Ty2,std::pair<_Ty1,_Ty2>>(M std::pair<_Ty1,_Ty2>::* 
,A1)'
2>          with
2>          [
2>              R=ledger::account_t *const &,
2>              F=boost::_mfi::dm<ledger::account_t *,std::pair<const 
ledger::string,ledger::account_t *>>,
2>              L=boost::_bi::list1<boost::arg<1>>,
2>              I=1,
2>              _Ty2=ledger::account_t *,
2>              _Ty1=const ledger::string,
2>              M=ledger::account_t *,
2>              A1=boost::arg<1>
2>          ]
2>          C:\Program Files (x86)\Microsoft Visual Studio 
11.0\VC\include\functional(1290): or       
'std::_Bind<_Forced,_Ret,_Fun,_V0_t,_V1_t,_V2_t,_V3_t,_V4_t,_V5_t,<unnamed-symbol>>
 std::bind<_Ty2,std::pair<_Ty1,_Ty2>,boost::arg<I>&>(_Rx 
std::pair<_Ty1,_Ty2>::* const ,_Arg0)' [found using argument-dependent lookup]
2>          with
2>          [
2>              _Forced=false,
2>              _Ret=void,
2>              _Fun=std::_Pmd_wrap<ledger::account_t *std::pair<const 
ledger::string,ledger::account_t *>::* ,ledger::account_t *,std::pair<const 
ledger::string,ledger::account_t *>>,
2>              _V0_t=boost::arg<1> &,
2>              _V1_t=std::_Nil,
2>              _V2_t=std::_Nil,
2>              _V3_t=std::_Nil,
2>              _V4_t=std::_Nil,
2>              _V5_t=std::_Nil,
2>              <unnamed-symbol>=std::_Nil,
2>              _Ty2=ledger::account_t *,
2>              _Ty1=const ledger::string,
2>              I=1,
2>              _Rx=ledger::account_t *,
2>              _Arg0=boost::arg<1> &
2>          ]
2>          while trying to match the argument list '(ledger::account_t 
std::pair<_Ty1,_Ty2>::* , boost::arg<I>)'
2>          with
2>          [
2>              _Ty1=const ledger::string,
2>              _Ty2=ledger::account_t *
2>          ]
2>          and
2>          [
2>              I=1
2>          ]
2>f:\opensourceprojects\ledger\src\account.h(135): error C2780: 
'iterators::enable_if<boost::is_class<T>,boost::transform_iterator<UnaryFunc,Iterator>>::type
 boost::make_transform_iterator(Iterator)' : expects 1 arguments - 2 provided
2>          
F:/Downloads/DevelopmentTools/BoostWithBinaries/boost_1_53_0\boost/iterator/transform_iterator.hpp(154)
 : see declaration of 'boost::make_transform_iterator'
2>  amount.cc

Reply via email to