How to identify Boost libraries which support eVC++ compiler
Hi, I'm trying to use Boost libraries with eMbedded Visual C++ 4.0 compiler (Windows CE applications development). I'd like to catalogue as much as possible Boost libraries which can be used with eVC++ 4.0 compiler. Currently, I can use smart pointers successfully. I also tried to use boost\date_time libraries and I found most of them can not be used with eVC++. I got "unknown CE compiler" error message. So, I suppose I will get that message in most cases. As I revealed there is a compiler detection mechanism in file boost\config\compiler\visualc.hpp but I couldn't find out how exactly it is used. I'd like to identify all Boost libraries which can not be used with eVC++. Could anyone give me a few hints about how to start such identification? Are there any macro definitions or can I expect that visualc.hpp can help me in this task? Thank in advance for all comments Best regards -- Mateusz Łoskot http://mateusz.loskot.net
At 12:59 2005-12-25, Mateusz =?iso-8859-2?Q?=A3oskot?= wrote:
Hi,
I'm trying to use Boost libraries with eMbedded Visual C++ 4.0 compiler (Windows CE applications development). I'd like to catalogue as much as possible Boost libraries which can be used with eVC++ 4.0 compiler.
I've been told that vs2005 supercedes eVC++4.0. since 4.0 is built on 6.0 technology which will (hopefully) be supported by boost only a little while longer wouldn't it be better to upgrade your compiler?
Currently, I can use smart pointers successfully. I also tried to use boost\date_time libraries and I found most of them can not be used with eVC++. I got "unknown CE compiler" error message. So, I suppose I will get that message in most cases.
As I revealed there is a compiler detection mechanism in file boost\config\compiler\visualc.hpp but I couldn't find out how exactly it is used.
I'd like to identify all Boost libraries which can not be used with eVC++. Could anyone give me a few hints about how to start such identification? Are there any macro definitions or can I expect that visualc.hpp can help me in this task?
Thank in advance for all comments Best regards -- Mateusz £oskot http://mateusz.loskot.net _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Victor A. Wagner Jr. http://rudbek.com The five most dangerous words in the English language: "There oughta be a law"
Hi, On Tue, Dec 27, 2005 8:03 am, Victor A. Wagner Jr. wrote:
At 12:59 2005-12-25, Mateusz Łoskot wrote:
I'm trying to use Boost libraries with eMbedded Visual C++ 4.0 compiler (Windows CE applications development). I'd like to catalogue as much as possible Boost libraries which can be used with eVC++ 4.0 compiler.
I've been told that vs2005 supercedes eVC++4.0.
Yes, it does. But I was a little confused if this compiler for mobile devices is really updated and more standard conformant. Unlike in eVC++ and VC++ 7.1 wich are separated compiler packages for devices and desktop, VC++ 8.0 combines all compilers in one package. So, it wasn't clear if the update applies to all compilers or to the compiler for desktop Windows. I made a little investigation and I've learned that compiler for devices is also updated. Here is what explanation from MSDN: "Because the device compilers are based on the desktop computer VC compiler, examining the differences between the desktop computer VC 6.0 compiler and 8.0 compiler provides a good approximation about the changes between the eMbedded Visual C++ device compilers and the Visual Studio 2005 device compilers." Note: it still seems to be a lack of complete STL and C Run-Time implementations for Windows CE. So, I prefer STLport as STL implementation.
Since 4.0 is built on 6.0 technology which will (hopefully) be supported by boost only a little while longer wouldn't it be better to upgrade your compiler?
Yes, I'm going to buy VS2005 but I can't exactly say when. In the meantime I'd like to try to use Boost with eVC++ 4.0 and to catalogue libraries working with eVC++ 4.0. Best regards -- Mateusz Łoskot http://mateusz.loskot.net
At 12:23 2005-12-28, Mateusz =?iso-8859-2?Q?=A3oskot?= wrote:
Hi,
On Tue, Dec 27, 2005 8:03 am, Victor A. Wagner Jr. wrote:
At 12:59 2005-12-25, Mateusz £oskot wrote:
I'm trying to use Boost libraries with eMbedded Visual C++ 4.0 compiler (Windows CE applications development). I'd like to catalogue as much as possible Boost libraries which can be used with eVC++ 4.0 compiler.
I've been told that vs2005 supercedes eVC++4.0.
Yes, it does. But I was a little confused if this compiler for mobile devices is really updated and more standard conformant. Unlike in eVC++ and VC++ 7.1 wich are separated compiler packages for devices and desktop, VC++ 8.0 combines all compilers in one package. So, it wasn't clear if the update applies to all compilers or to the compiler for desktop Windows.
I made a little investigation and I've learned that compiler for devices is also updated. Here is what explanation from MSDN:
"Because the device compilers are based on the desktop computer VC compiler, examining the differences between the desktop computer VC 6.0 compiler and 8.0 compiler provides a good approximation about the changes between the eMbedded Visual C++ device compilers and the Visual Studio 2005 device compilers."
Note: it still seems to be a lack of complete STL and C Run-Time implementations for Windows CE. So, I prefer STLport as STL implementation.
Since 4.0 is built on 6.0 technology which will (hopefully) be supported by boost only a little while longer wouldn't it be better to upgrade your compiler?
Yes, I'm going to buy VS2005 but I can't exactly say when. In the meantime I'd like to try to use Boost with eVC++ 4.0 and to catalogue libraries working with eVC++ 4.0.
have you tried the free VC++2005 express first link at http://www.thefreecountry.com/compilers/cpp.shtml don't forget to get the SDK
Best regards -- Mateusz £oskot http://mateusz.loskot.net _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Victor A. Wagner Jr. http://rudbek.com The five most dangerous words in the English language: "There oughta be a law"
Victor A. Wagner Jr. wrote:
At 12:23 2005-12-28, Mateusz =?iso-8859-2?Q?=A3oskot?= wrote:
Yes, I'm going to buy VS2005 but I can't exactly say when. In the meantime I'd like to try to use Boost with eVC++ 4.0 and to catalogue libraries working with eVC++ 4.0.
have you tried the free VC++2005 express first link at http://www.thefreecountry.com/compilers/cpp.shtml don't forget to get the SDK
Yup! But VC++ Express edition does not support mobile devices development, unfortunately: http://msdn.microsoft.com/vstudio/products/compare/ Cheers -- Mateusz Łoskot http://mateusz.loskot.net
Currently, I can use smart pointers successfully. I also tried to use boost\date_time libraries and I found most of them can not be used with eVC++. I got "unknown CE compiler" error message. So, I suppose I will get that message in most cases.
As I revealed there is a compiler detection mechanism in file boost\config\compiler\visualc.hpp but I couldn't find out how exactly it is used.
I'd like to identify all Boost libraries which can not be used with eVC++. Could anyone give me a few hints about how to start such identification? Are there any macro definitions or can I expect that visualc.hpp can help me in this task?
I suspect there was a bug in visualc.hpp that causes that #error to be generated in almost all cases with eVC++ (it's been fixed in cvs), so try commenting out the offending #error. After that if it compiles then it'll likely work (but try running a test program or two to make sure). Unfortunately we've never had anyone run the tests regularly on embedded platforms so your mileage may vary: so any feedback will be gratefully received! John.
Hi, On Tue, Dec 27, 2005 11:13 am, John Maddock wrote:
As I revealed there is a compiler detection mechanism in file boost\config\compiler\visualc.hpp but I couldn't find out how exactly it is used.
I'd like to identify all Boost libraries which can not be used with eVC++. Could anyone give me a few hints about how to start such identification? Are there any macro definitions or can I expect that visualc.hpp can help me in this task?
I suspect there was a bug in visualc.hpp that causes that #error to be generated in almost all cases with eVC++ (it's been fixed in cvs), so try commenting out the offending #error. After that if it compiles then it'll likely work (but try running a test program or two to make sure).
Thank you for your suggestion. Indeed, it solved the problem. I commented line 131 in the file boost/config/compiler/visualc.hpp
Unfortunately we've never had anyone run the tests regularly on embedded platforms so your mileage may vary: so any feedback will be gratefully received!
Unfortunately, uncommenting that check solved the problem but partially.
As my next testes, I tried to use Boost.Any and I see there are compilere
related checks still present.
When I include the any.hpp
#include
Thank you for your suggestion. Indeed, it solved the problem. I commented line 131 in the file boost/config/compiler/visualc.hpp
Unfortunately we've never had anyone run the tests regularly on embedded platforms so your mileage may vary: so any feedback will be gratefully received!
Unfortunately, uncommenting that check solved the problem but partially. As my next testes, I tried to use Boost.Any and I see there are compilere related checks still present. When I include the any.hpp #include
and I'm getting this error message (I have to confess that it's hard for me to decipher it :-)) c:\boost\include\boost-1_33_1\boost\mpl\aux_\yes_no.hpp(42) : error C2265: '<Unknown>' : reference to a zero-sized array is illegal c:\boost\include\boost-1_33_1\boost\mpl\aux_\yes_no.hpp(47) : see reference to class template instantiation 'boost::mpl::aux::weighted_tag<n>' being compiled c:\boost\include\boost-1_33_1\boost\type_traits\broken_compiler_spec.hpp(23)
fatal error C1506: unrecoverable block scoping error
The message above relates to the following check of compiler:
#if !BOOST_WORKAROUND(BOOST_MSVC, == 1200) typedef char (&type)[n]; #else
This is a known issue: eVC++ bumps the version number up to 1201 or 1202 so a lot of version checks / workarounds don't work anymore. A large patch for this was added to mainline cvs, but it didn't make it in time for 1.33.1 (too big a patch) See http://lists.boost.org/Archives/boost/2005/07/90101.php John.
On Thu, Dec 29, 2005 11:45 am, John Maddock wrote:
Unfortunately, uncommenting that check solved the problem but partially. As my next testes, I tried to use Boost.Any and I see there are compilere related checks still present. When I include the any.hpp #include
and I'm getting this error message (I have to confess that it's hard for me to decipher it :-)) c:\boost\include\boost-1_33_1\boost\mpl\aux_\yes_no.hpp(42) : error C2265: '<Unknown>' : reference to a zero-sized array is illegal c:\boost\include\boost-1_33_1\boost\mpl\aux_\yes_no.hpp(47) : see reference to class template instantiation 'boost::mpl::aux::weighted_tag<n>' being compiled c:\boost\include\boost-1_33_1\boost\type_traits\broken_compiler_spec.hpp(23)
fatal error C1506: unrecoverable block scoping error
The message above relates to the following check of compiler:
#if !BOOST_WORKAROUND(BOOST_MSVC, == 1200) typedef char (&type)[n]; #else
This is a known issue: eVC++ bumps the version number up to 1201 or 1202 so a lot of version checks / workarounds don't work anymore.
A large patch for this was added to mainline cvs, but it didn't make it in time for 1.33.1 (too big a patch)
I understand it now. Would you recommend to use CVS HEAD or I better wait until the patch will be included in future release? Cheers -- Mateusz Łoskot http://mateusz.loskot.net
I understand it now. Would you recommend to use CVS HEAD or I better wait until the patch will be included in future release?
Might be a long wait ;-) Either use a snapshot of cvs, or apply the patch to 1.33.1 (it just changes some msvc specific workarounds, so in theory it shouldn't cause any breakages, though you never know). John.
John Maddock wrote:
I understand it now. Would you recommend to use CVS HEAD or I better wait until the patch will be included in future release?
Might be a long wait ;-)
I see :-)
Either use a snapshot of cvs, or apply the patch to 1.33.1 (it just changes some msvc specific workarounds, so in theory it shouldn't cause any breakages, though you never know).
I'll try fix it that way. Thank you very much for your assistance! -- Mateusz Łoskot http://mateusz.loskot.net
John Maddock
Either use a snapshot of cvs, or apply the patch to 1.33.1 (it just changes some msvc specific workarounds, so in theory it shouldn't cause any breakages, though you never know).
I'd like to report that I did clean build of Boost CVS HEAD checkouted today. Second, problems with broken compiler detection mechanism have disappeared. Third, boost::any works with eVC++ 4.0 SP4 well :-) Now, I'm going to test the rest of Boost libraries with eVC++ 4.0. Thanks again! -- Mateusz Łoskot http://mateusz.loskot.net
participants (3)
-
John Maddock
-
Mateusz Łoskot
-
Victor A. Wagner Jr.