Пример Boost не компилируется на VS2010?

#c #visual-studio-2010 #visual-c #boost

#c #visual-studio-2010 #visual-c #boost

Вопрос:

Я пытался заставить работать один из примеров boost с веб-сайта:

http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/http/client/async_client.cpp

но всякий раз, когда я собирал и пытался выполнить, я продолжал получать следующее от VS2010:

 1>------ Build started: Project: highfreqdemo, Configuration: Debug Win32 ------
1>Build started 24/10/2011 18:41:08.
1>InitializeBuildStatus:
1>  Touching "Debughighfreqdemo.unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>  highfreqdemo.cpp
1>c:usersxdocumentsvisual studio 2010projectshighfreqdemohighfreqdemohighfreqdemo.cpp(4): warning C4627: '#include <iostream>': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:usersxdocumentsvisual studio 2010projectshighfreqdemohighfreqdemohighfreqdemo.cpp(5): warning C4627: '#include <istream>': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:usersxdocumentsvisual studio 2010projectshighfreqdemohighfreqdemohighfreqdemo.cpp(6): warning C4627: '#include <ostream>': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:usersxdocumentsvisual studio 2010projectshighfreqdemohighfreqdemohighfreqdemo.cpp(7): warning C4627: '#include <string>': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:usersxdocumentsvisual studio 2010projectshighfreqdemohighfreqdemohighfreqdemo.cpp(8): warning C4627: '#include <boost/asio.hpp>': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:usersxdocumentsvisual studio 2010projectshighfreqdemohighfreqdemohighfreqdemo.cpp(9): warning C4627: '#include <boost/bind.hpp>': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:usersxdocumentsvisual studio 2010projectshighfreqdemohighfreqdemohighfreqdemo.cpp(199): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.76
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
  

Я немного не уверен, что именно нужно сделать, чтобы исправить это?

Ответ №1:

 Add directive to 'StdAfx.h' or rebuild precompiled header
  

Ваш проект настроен с поддержкой предварительно скомпилированных заголовков, но вы не включили предварительно скомпилированный заголовок в исходный файл.

Предварительно скомпилированный файл заголовка (в данном случае StdAfx.h) должен быть включен в самый верх каждого исходного файла, который настроен на использование предварительно скомпилированного заголовка.

Либо включите этот файл, либо отключите предварительно скомпилированные заголовки (в свойствах проекта, в разделе C / C -> Предварительно скомпилированные заголовки, установите для свойства Precompiled Header значение «Не использовать предварительно скомпилированные заголовки»; это также можно установить для отдельных исходных файлов).

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

1. Что бы вы порекомендовали здесь? В чем недостаток отказа от использования предварительно скомпилированных заголовков? Я не совсем уверен, что понимаю последствия

2. Предварительно скомпилированные заголовки используются для повышения производительности компиляции. Если у вас небольшой проект, они вам не нужны. Лучший вариант — создать новый проект из пустого шаблона проекта, который не включает предварительно скомпилированный заголовок по умолчанию, и начать оттуда.

Ответ №2:

Предупреждения и ошибки довольно понятны; вам нужно добавить #include "StdAfx.h" в свой highfreqdemo.cpp файл, прежде чем включать заголовки standard и Boost.

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

1. Причина, по которой я не понял ошибок, заключается в том, что я думал, что этот пример будет работать «из коробки»