Для компиляции проекта C ++ Net Lib под Windows с помощью Visual Studio 2008 мне нужно отключить проверку концепции (см. Эту ветку: https://groups.google.com/forum/#!msg/cpp-netlib/G-hM25EnCWA/gdsHBaVfmggJ)
Компиляция работает в Release, но не в Debug (ошибка при компиляции .cpp)
Мне удалось получить компиляцию заголовка успешно, определив NDEBUG перед включением заголовка клиента. Тем не менее, это не удается позже, когда компоновщик хочет связать с версией выпуска библиотеки Boost.system: пока я использую отладку. Я получаю эту ошибку:
6> LINK: фатальная ошибка LNK1104: невозможно открыть файл ‘libboost_system-vc90-mt-1_50.lib’
Я хотел предотвратить это с помощью BOOST_SYSTEM_NO_LIB, но он по-прежнему хочет ссылаться на версию релиза (мои ссылки на projet ‘libboost_system-vc90-mt-gd-1_50.lib’ (библиотека отладки))
Существует ли простой макрос, который нужно определить перед включением заголовка, который отключит материал Boost.ConceptCheck, как это делается в сборке выпуска? Я не нашел никакой информации ни в документации Boost, ни в самих заголовочных файлах.
Большое спасибо
Gaetan
Вот что я бы сделал:
#include <boost/concept/assert.hpp>
// redefine concept assert, suppress the warning etc.
#undef BOOST_CONCEPT_ASSERT
#define BOOST_CONCEPT_ASSERT(Model)
#include <boost/concept_check.hpp>
struct not_an_iterator
{};int main()
{
BOOST_CONCEPT_ASSERT((InputIterator<not_an_iterator>));
return 0;
}
Это заставит concept_assert ничего не делать, но я боюсь, что это не будет
чтобы предотвратить ошибки компоновщика, которые кажутся неясными.
Других решений пока нет …