2012-03-10 6 views
2

Я не опытный программист. Я попытался вырезать часть увеличения и вставить его в свой проект, который является решением C++ в Visual Studio 2010. Я сделал это так:#include <boost/chrono.hpp> вызывает неразрешенный внешний символ, bcp используется

  • библиотека распаковывать подталкивание
  • bootstrap.bat
  • bjam tools/bcd - это созданный реж \ bin.v2 \ инструменты \ BCP \ MSVC-10,0 \ релиз \ ссылка статическую \ резьбонарезных мульти \
  • изменить каталог в упомянутых выше
  • я написал сценарий Fo. г сканирование всех файлов в растворе, результат:
    noncopyable отношение static_assert резьба/блокировки резьбы хроно межпроцессного/mapped_region резьба/recursive_mutex cstdint межпроцессного CRC/file_mapping make_shared shared_ptr lexical_cast
  • bcp --boost=C:\Users\xxxxxxxx\boost_1_49_0 noncopyable static_assert ratio thread/locks thread chrono interprocess/mapped_region thread/recursive_mutex crc cstdint interprocess/file_mapping make_shared shared_ptr lexical_cast lexical_cast ./myboost
  • копия ./myboost в решение, настроить свойства, все работает нормально, пока я не пытаюсь # включить "boost/chrono.hpp" (например, #include "boost/lexical_cast.hpp" в порядке).
  • подталкивание/chrono.hpp вызывает ошибку компоновщика:

    3> playerMain.obj: ошибка LNK2001: неразрешенный внешний символ «Класс подталкивание :: Система :: error_category Const & __cdecl повышение :: системы :: system_category (вакуум) "(system_category @ система @ подталкивание @@ YAABVerror_category @ 12 @ XZ)

    3> playerMain.obj: ошибка LNK2001: неразрешенный внешний символ" класс подталкивание :: система :: error_category Const & __cdecl повышение :: система: : generic_category (void) "(? generic_category @ system @ boost @@ YAABVerror_category @ 12 @ XZ)


Правильно ли использую bcp?
Что делать, чтобы заставить его работать?

+0

Добро пожаловать в stackoverflow. Boost используется на нескольких платформах (Windows, Mac, Linux), поэтому важно указать, какую платформу и компилятор вы используете, прежде чем обращаться за помощью к установке. Я должен был сделать вывод, что вы используете Visual Studio, определяя 'msvc-10' в своем вопросе. –

+0

Готово. Спасибо за советы. – Michal

ответ

3

Процесс установки Boost для использования с Visual Studio достаточно четко изложен here. Вам не нужно писать сценарии установки.

Важно знать, что большинство библиотек Boost предназначены только для заголовков (например, Boost.Lexical_Cast), но некоторые из них требуют ссылки на статическую библиотеку (например, Boost.System). См. Это section документа Getting Started о том, как позволить Visual Studio знать, где находятся статические библиотеки Boost.

Этот section содержит список библиотек не только для заголовков. Некоторые библиотеки (такие как Boost.Chrono и Boost.Asio) сами являются только заголовками, но они зависят от Boost.System, которые необходимо связать с вашей программой.

Надеюсь, это поможет.

+0

Chrono не упоминается в этом разделе [http://www.boost.org/doc/libs/1_49_0/more/getting_started/windows.html#header-only-libraries). В [chrono doumentation] (http://www.boost.org/doc/libs/1_47_0/doc/html/chrono/reference.html#chrono.reference.cpp0x.chrono_hpp.conf.header_only) существует способ использовать только chrono как заголовок. Я все еще борюсь с этой проблемой. – Michal

+0

Проблема решена. Вы были правы, мне пришлось добавить boost/stage/lib в VC++ Directories. Благодарю. – Michal