На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Как корректно использовать boost чтобы компилятор не выдавал ошибки??? , при работе с boost компилятор выдает ошибки
    Пишу код
    ExpandedWrap disabled
      using boost::chrono::duration_cast;
      using boost::chrono::microseconds;
      typedef boost::chrono::high_resolution_clock clock;
      typedef boost::chrono::time_point<clock> time_point;

    компилятор выдает ошибки во всех четырех строках Ошибка (активно) E0276 имя, за которым следует выражение "::", должно определять класс или пространство имен Helper H:\studyprojects\Helper\Helper\Helper.cpp 69
    в последней строке еще добавляет ошибку требуется точка с запяой";"подчеркивая красным угловую скобку после clock.В настройках проекта я указал пути к boost изображение в прикрепленном файле.Что не нравится компилятору.как устранить ошибку?
    Папку C:\Program Files\Boost 1_81_0 я создавал вручную а в нее разархивировал файл boost_1_81_0.7z
    Прикреплённая картинка
    Прикреплённая картинка
      Понятия не имею, что там у тебя. Я вот тоже просто распаковал версию 1.81.0, и компиляция работает. (Не работает сборка, но это потому, что либу надо собрать, чего я пока не сделал.) Единственное, что вызывает диссонанс, имя "clock" уже известно компилятору как функция, подозреваю, что из-за включения <ctime> где-то в недрах boost.
      А почему именно boost? В std давно уж есть свой <chrono>
      Сообщение отредактировано: Qraizer -
        izumov
        include-ы какие сделали перед вашими декларациями??
          Вот все штсдгв-ы в файле

          #include <iostream>
          #include <clocale>
          //#include <fcntl>
          #include <io.h>
          #include <stdio.h>
          //#include <Windows.h>
          #include <iostream>
          #include <sstream>
          #include <BaseTsd.h>//для доступа кописанию типа данных ulong64
          #include <time.h> //подключение библиотеки chrono для измерения длительности выполнения участка кода
          //#include <chrono>

          #include <boost/thread.hpp>
          #include <boost/bind.hpp>
          #include <boost/asio.hpp>
          #include <boost/shared_ptr.hpp>
          #include <boost/enable_shared_from_this.hpp>
          #include <boost/scoped_ptr.hpp>
          #include <boost/chrono.hpp>
          #include <string>
          #include <conio.h>
          Пробовал найти эту библиотеку libboost_thread-vc143-mt-gd-x64-1_81.lib с помощью проводника в папках boost рузультат отрицательный. Устанавливал booost с помощью инсталлятора для windows.
            Сейчас сборщик выдаёт одну ошибку-не удаётся открыть файл библиотеки которую я указал.Ее действительно нет в папках boost.Как быть?Где её взять и добиться сборки проекта?
              Ну во-первых, всё, что ты тут берёшь из boost, имеется и в std. Кроме asio, который пока в разработке, но есть базовые примитивы вроде promise, future, optional и кое-кто ещё. Так что не вижу абсолютно никаких мотиваций дёргать boost ради thread, bind, shared, scoped и chrono.
              Во-вторых, библиотеки, как это везде всегда бывает, нужны разные в зависимости от режимов компиляции. Тебе вот, к примеру, нужны (чтоб не соврать бы ещё) не отладочные многопоточные библиотеки для динамической линковки, динамически связываемые с библиотеками RTL, для 64-битных приложений. Это для Visual Studio соответствует (вроде бы) параметру компиляции -MD, но это неточно. Чтобы компилировать в другом режиме, для отладки там или со статическим связыванием, такие библиотеки boost нужно собрать отдельно. По умолчанию b2.exe он собирает лишь один вариант, чтобы собрать другие ваниаты, запусти его с --help, он там всё расскажет. Смотри пропертя variant, link, runtime-link и threading.

              P.S. Я в своё время собирал четыре варианта (однопоточные/многопоточные, статические/динамические) в двух версиях (debug/release), но это было слишком много. Потом остановился на трёх вариантах: статические и динамические release + статические debug, причём только многопоточные.
              P.P.S И да, нет особого смысла собирать динамические либы со статическим связываем RTL и наоборот. Проще, чтобы тип связывания совпадал.

              Добавлено
              P.P.P.S. Впрочем, ты можешь просто запустить b2 с параметром --build-type=complete и не париться, он соберёт всё возможные варианты. Но будь готов к гигабайтам на диске и хреновой куче времени.
              Сообщение отредактировано: Qraizer -
                В какой папке запускать b2?Учитывая что boost я устанавливал с помощью уже прекомпилированой сборки
                  Гм... Я предкомпилированными не пользовался, как раз из-за малого количества вариантов библиотек. Просто брал сырцы в 7z, распаковывал, запускал bootstrap.bat, он создавал мне b2.exe. А уж он как раз для сборки библиотек и предназначен. Сильно подозреваю, что вариант рабочий и в твоём случае.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0353 ]   [ 17 queries used ]   [ Generated: 8.09.24, 10:42 GMT ]