вторник, 10 июня 2014 г.

[prog.c++] Да уж, засада с этим ACE 6.2.6 (а так же MSVC, MinGW-w64 и пр.)...

Текущая версия ACE (6.2.6 на данный момент) поддерживает только MSVC 11.0, и не имеет готовых sln-файлов для MSVC 12.0.

При этом в MSVC 11.0 нет поддержки variadic templates и есть баги в реализации std::future (например, мне очень мешает вот этот). Вроде как MSVC 12.0 все это уже умеет, но ACE пока его не поддерживает официально... :(

MinGW-w64 предоставляет два варианта GCC: один win32, второй posix. В первом нет поддержки для C++11 threading (т.е. нет нитей, promise, future и т.д.). А во втором, который posix, все это есть (хоть и не быстрое). Но ACE не может скомпилироваться в posix-варианте GCC от MinGW-w64 из-за того, что в этом варианте есть куча макросов вроде localtime_r. Для ACE это проблема, т.к. ACE пытается определять localtime_r самостоятельно, да еще в собственном пространстве имен ACE_OS, чему подобные макросы сильно препятствуют... Про эту проблему знают еще с версии 6.2.1, даже предлагали патчи и оформляли тикет в bugzilla, да только воз и ныне там... :(

Пичалька. Пока спасает наличие нормального GCC 4.8.3 под Cygwin-ом. Ну и остается надеяться на то, что ACE-овцы таки сделают поддержку MSVC 12.0 "искаропки"... На поддержку MinGW-w64-posix я и не надеюсь.

Комментариев нет: