#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. Причина, по которой я не понял ошибок, заключается в том, что я думал, что этот пример будет работать «из коробки»