Hey !
I’m porting my project to Windows now. After hours of yelling at vc’s developers for their incredibly shitty and incomplete implementation of C++11, I finished solving all the issues coming directly from my code.
What’s left is a recurrent compilation error with socket_portable.h.
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(28): error C2825: '_Fty': must be a class or namespace when followed by '::'
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(40) : see reference to class template instantiation 'std::tr1::_Result_type2<__formal,_Fty,_Arg0,_Arg1>' being compiled
with
[
__formal=false,
_Fty=__w64 unsigned int,
_Arg0=std::tr1::_Nil &,
_Arg1=std::tr1::_Nil &
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(597) : see reference to class template instantiation 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>' being compiled
with
[
_Fty=__w64 unsigned int,
_Farg0=std::tr1::_Nil &,
_Farg1=std::tr1::_Nil &
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xrefwrap(28) : see reference to class template instantiation 'std::tr1::_Result_of<_Ty>' being compiled
with
[
_Ty=__w64 unsigned int (std::tr1::_Nil &,std::tr1::_Nil &)
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxbind1(273) : see reference to class template instantiation 'std::tr1::result_of<_Fty>' being compiled
with
[
_Fty=__w64 unsigned int (std::tr1::_Nil &,std::tr1::_Nil &)
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxbind0(10) : see reference to class template instantiation 'std::tr1::_Bind2<_Callable,_Arg0,_Arg1>::_Return<_Barg0,_Barg1,_Barg2,_Barg3,_Barg4,_Barg5,_Barg6,_Barg7,_Barg8,_Barg9>' being compiled
with
[
_Callable=std::tr1::_Callable_obj<SOCKET,false>,
_Arg0=const sockaddr *,
_Arg1=unsigned int,
_Barg0=std::tr1::_Nil &,
_Barg1=std::tr1::_Nil &,
_Barg2=std::tr1::_Nil &,
_Barg3=std::tr1::_Nil &,
_Barg4=std::tr1::_Nil &,
_Barg5=std::tr1::_Nil &,
_Barg6=std::tr1::_Nil &,
_Barg7=std::tr1::_Nil &,
_Barg8=std::tr1::_Nil &,
_Barg9=std::tr1::_Nil &
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\functional(408) : see reference to class template instantiation 'std::tr1::_Bind_base<_Ret,_BindN>' being compiled
with
[
_Ret=std::tr1::_Notforced,
_BindN=std::tr1::_Bind2<std::tr1::_Callable_obj<SOCKET,false>,const sockaddr *,unsigned int>
]
c:\panda3d-1.8.0\my_include\panda3d\socket_portable.h(82) : see reference to class template instantiation 'std::tr1::_Bind_fty<_Fty,_Ret,_BindN>' being compiled
with
[
_Fty=SOCKET,
_Ret=std::tr1::_Notforced,
_BindN=std::tr1::_Bind2<std::tr1::_Callable_obj<SOCKET,false>,const sockaddr *,unsigned int>
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(28): error C2903: 'result' : symbol is neither a class template nor a function template
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(28): error C2039: 'result' : is not a member of '`global namespace''
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(28): error C2143: syntax error : missing ';' before '<'
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(28): error C2039: 'type' : is not a member of '`global namespace''
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(28): error C2238: unexpected token(s) preceding ';'
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(40): error C2039: '_Type' : is not a member of 'std::tr1::_Result_type2<__formal,_Fty,_Arg0,_Arg1>'
with
[
__formal=false,
_Fty=__w64 unsigned int,
_Arg0=std::tr1::_Nil &,
_Arg1=std::tr1::_Nil &
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(40): error C2146: syntax error : missing ';' before identifier '_Type'
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(40): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(40): error C2602: 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type' is not a member of a base class of 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>'
with
[
_Fty=__w64 unsigned int,
_Farg0=std::tr1::_Nil &,
_Farg1=std::tr1::_Nil &
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(40) : see declaration of 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type'
with
[
_Fty=__w64 unsigned int,
_Farg0=std::tr1::_Nil &,
_Farg1=std::tr1::_Nil &
]
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xxresult(40): error C2868: 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type' : illegal syntax for using-declaration; expected qualified-name
with
[
_Fty=__w64 unsigned int,
_Farg0=std::tr1::_Nil &,
_Farg1=std::tr1::_Nil &
]
c:\panda3d-1.8.0\my_include\panda3d\socket_portable.h(82): error C2440: 'return' : cannot convert from 'std::tr1::_Bind_fty<_Fty,_Ret,_BindN>' to 'int'
with
[
_Fty=SOCKET,
_Ret=std::tr1::_Notforced,
_BindN=std::tr1::_Bind2<std::tr1::_Callable_obj<SOCKET,false>,const sockaddr *,unsigned int>
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
I’m using Panda3D 1.8.0 and Visual Studio 2010.
Is there any compilation option I need to add ?
Also, this looks strangely like a network thing. I don’t use any piece of Panda3D for network. If this compilation error isn’t normal, maybe getting rid of everything related to network in Panda3D would do the trick. Is it possible to do so without recompiling Panda3D ?
[SOLVED]
Alright, I’ve managed to compile Panda3D with MSVC2010. I also wrote a manual to explain how to build my project. There’s mostly stuff on how to compile Panda3D and libRocket, and the things to do so they don’t collide:
code.google.com/p/fallout-equest … i/MSVC2010
With this heat, it’s getting dangerous for me to compile stuff and using the computer at the same time, so I didn’t try without the --no-python option. But it might work.